基本操作
Man=['ZJ']
Man.append("ZBB")
Man.insert(1,'WXK')
Man.pop()
Man.remove('ZJ')
深浅拷贝
Man=['ZJ']
Man.append("ZBB")
Man.insert(1,'WXK')
handsome_man=Man
handsome_man.pop()
print(handsome_man)
可以看出,将 man
复制给 handsome_man
后,当 handsome_man
改变时,原数组也会跟着改变。
如果我们不想改变原列表,那么我们可以使用 copy()
函数:
Man=['ZJ']
Man.append("ZBB")
Man.insert(1,'WXK')
handsome_man=Man.copy()
handsome_man.pop()
print(handsome_man)
这种copy方法我们称为浅拷贝,为什么叫浅拷贝呢?我们再通过一个例子来看看:
a = [1,2,[3,4,5]]
ac = a.copy()
ac[0] = 10
ac[2][1] = 40
print(a)
可以看到,对于更深层嵌套的list,对复制列表的变动依旧会改变原列表。
这时就需要deepcopy了,也就是深拷贝:
from copy import deepcopy
a = [1,2,[3,4,5]]
ac = deepcopy(a)
ac[0] = 10
ac[2][1] = 40
切片
python中的切片和 range()
函数差不多,里面的参数代表 (start, stop[, step])
.
注意,切片是左闭右开的区间。
a = list(range(10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[-1]
# 9
a[:-1]
# [0, 1, 2, 3, 4, 5, 6, 7, 8]
a[1:7:2]
# [1, 3, 5]
a[::2]
# [0, 2, 4, 6, 8]
a[::-2]
# [9, 7, 5, 3, 1]
a[::-1]
# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
迭代时获取索引
a = list(range(1,10,2))
for i,c in enumerate(a):
print('a[{}]={}'.format(i,c))
# a[0]=1
# a[1]=3
# a[2]=5
# a[3]=7
# a[4]=9