2.Python中列表学习

Python List中切片的使用学习

列表切片如果使用正确会带来简洁高效地程序实现,对于列表的增’删‘改’查的功能和只要分别掌握以下几点:
1.append(在末尾添加);".insert(在指定位置插入元素)";
2.删除元素del list[index] (删除一个元素且不再使用),.pop()(弹出元素的方法,默认从末尾进行弹出),.remove(‘指定元素’) 根据值进行删除元素
以下要介绍的是列表的切片表示和操作,对简化列表的操作很有帮助。

1.list[a:b]的扫描结果不包括第b位置上的元素

列表的第一个元素的下标是0,list[a:b] 表示列表从第,a位置开始扫描,一直到第b-1为下标的元素。

#例如
squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[2:6])#从下标为2的元素4扫描,不包括下标为6的元素36
print(squares[3:8])
print(squares[0:1])

----------------------------------
>>结果:
[4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]

2.省略下标的写法

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[:7])#起始元素的位置默认为列表头;
print(squares[7:])#结束元素的位置默认为列表尾.

------------------------------
>>结果:
[0, 1, 4, 9, 16, 25, 36]
[49, 64, 81]

3.指定扫描步长

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[::2])#步长为2
print(squares[2:8:3])

---------------------------------
>>结果:
[0, 4, 16, 36, 64]
[4, 25]

4.注意负值下标的使用

当一个列表的长度很长时候,我们可能需要借助负数来很快定位到需要扫描的范围。-1在列表中可以指最后一个元素的下标,相似的-2表示倒数第2个元素的下标。

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[1:-1])
print(squares[1:-2])
print(sqs[7:5:-1])

----------------------------------
>>结果:
[1, 4, 9, 16, 25, 36, 49, 64]
[1, 4, 9, 16, 25, 36, 49]
[49, 36]

对于列表的复制常用到.copy方法,但是copy方法的问题是会将几个列表关联起来,任何一个发生改变都会导致所有列表的变化,通常我们会使用copy.copy所谓的浅复制功能实现。
其实列表切片的另一个作用是实现复制列表的情况下不影响原来列表的值,使用方法如下。

A = [0, 1, 4, 9, 16, 25]
B=A
C=A[:]
B[-1]=0#修改B的值会导致A和C的值同时改变
#C[-1]#而切片复制法修改C的值不会引起A或B的任何变化
print('A=',A)
print('B=',B)
print('C=',C)
-----------------------------
>>结果:
A= [0, 1, 4, 9, 16, 0]
B= [0, 1, 4, 9, 16, 0]
C= [0, 1, 4, 9, 16, 0]
--------------------------
#C[-1]=0
A= [0, 1, 4, 9, 16, 25]
B= [0, 1, 4, 9, 16, 25]
C= [0, 1, 4, 9, 16, 0]
#仅仅修改了C自身的值!

熟练使用切片的方法,会是有关列表的操作变得简洁高效。

;