基本操作

  1. Man=['ZJ']
  2. Man.append("ZBB")
  3. Man.insert(1,'WXK')
  4. Man.pop()
  5. Man.remove('ZJ')

image.png
image.png

深浅拷贝

  1. Man=['ZJ']
  2. Man.append("ZBB")
  3. Man.insert(1,'WXK')
  4. handsome_man=Man
  5. handsome_man.pop()
  6. print(handsome_man)

image.png
可以看出,将 man 复制给 handsome_man 后,当 handsome_man 改变时,原数组也会跟着改变。
如果我们不想改变原列表,那么我们可以使用 copy() 函数:

  1. Man=['ZJ']
  2. Man.append("ZBB")
  3. Man.insert(1,'WXK')
  4. handsome_man=Man.copy()
  5. handsome_man.pop()
  6. print(handsome_man)

image.png

这种copy方法我们称为浅拷贝,为什么叫浅拷贝呢?我们再通过一个例子来看看:

  1. a = [1,2,[3,4,5]]
  2. ac = a.copy()
  3. ac[0] = 10
  4. ac[2][1] = 40
  5. print(a)

image.png
可以看到,对于更深层嵌套的list,对复制列表的变动依旧会改变原列表。

这时就需要deepcopy了,也就是深拷贝:

  1. from copy import deepcopy
  2. a = [1,2,[3,4,5]]
  3. ac = deepcopy(a)
  4. ac[0] = 10
  5. ac[2][1] = 40

image.png

切片

python中的切片和 range() 函数差不多,里面的参数代表 (start, stop[, step]) .
注意,切片是左闭右开的区间。

  1. a = list(range(10))
  2. # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  3. a[-1]
  4. # 9
  5. a[:-1]
  6. # [0, 1, 2, 3, 4, 5, 6, 7, 8]
  7. a[1:7:2]
  8. # [1, 3, 5]
  9. a[::2]
  10. # [0, 2, 4, 6, 8]
  11. a[::-2]
  12. # [9, 7, 5, 3, 1]
  13. a[::-1]
  14. # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

迭代时获取索引

  1. a = list(range(1,10,2))
  2. for i,c in enumerate(a):
  3. print('a[{}]={}'.format(i,c))
  4. # a[0]=1
  5. # a[1]=3
  6. # a[2]=5
  7. # a[3]=7
  8. # a[4]=9