列表
列表的几种表示:
x=list(range(10))
x=[0]*5 #用 * 使列表中所有元素均相同
x = [0 for i in range(5)] #将所有i都赋值为0
向列表中添加元素
x=[7,8,9]
x.append([1,2,3]) #追加x=[7,8,9,[1,2,3]],[1,2,3]算作一个元素,只占用一个下标
x.extend([1,2,3]) #扩展x=[7,8,9,1,2,3]
x.insert(2, 0) #插入x=[7,8,0,9]
删除列表中的元素
x.remove('Monday') #移除列表中某个值的第一个匹配项
x.pop() # 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,可以继续使用该元素
x.pop(-3) #也可指定移除某个下标元素,此时删除倒数第3位元素,没有下标为-0的元素
del x[0:2] #删除列表x中下标为0,1,2的元素,且不能再以任何方式使用这些元素
获取列表中的元素
def takeSecond(elem):
return elem[1] # 获取列表的第二个元素
print (x[1]) #获取列表中下标为1的元素
print (x[开始下标:结束下标:步长]) #获取的元素含开始,不含结束;步长为-1表示将列表反向排列
#若没有开始下标,则默认从0开始;若没有结束下标,则默认到最后;若没有步长,则默认步长为1,即下标+1
print (x[:]) #获取列表中全部元素
深拷贝与浅拷贝
赋值
b = a
更改a、更改a中元素都可以改变b
浅拷贝
b = a.copy()
b=a[:]
更改a无法改变b;更改a中元素可以改变b
深拷贝
import copy
b = copy.deepcopy(a)
深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的
更改a、更改a中元素都无法改变b
列表的其他方法
list.count(obj) #统计某个元素在列表中出现的次数
list.index(x[, start[, end]]) #从列表中找出某个值第一个匹配项的索引位置,[]表示可有可无
list.reverse() #反向列表中元素
x.sort(key=lambda a: a[0]) #按照列表中第1个元素对多个列表排序;a只是临时起的一个名字,可以更改为任意的名字
def takeSecond(elem):
return elem[1]
x.sort(key=takeSecond) #按照列表中第2个元素对多个列表排序
元组
元组的表达
t1 = (1, 10.31,'a')
t2 = 1, 10.31,'a' #创建元组可以用小括号 (),也可以什么都不用
x = (1,) #元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
print(8 * (8)) # 整型,64
添加元素到元组中
week = week[:2] + ('Wednesday',) + week[2:]
更改元组中的元素
t1[3][0] = 9 #更改第四个元素中第一个位置的值
可对元组进行操作的函数
count('python') #记录在元组 t 中该元素出现几次
index(10.31) #找到该元素在元组 t 的索引(下标)
解压元组
(a, b, c) = t
(a, b, (c, d)) = t #按照元组的结构定义变量
a, b, *rest, c = t #*rest可代表一个或多个元素,包含第三个到倒数第二个
a, b, *_ = t # *_可代表一个或多个元素,包含第三个到最后一个