python列表之部分列表——切片
目录
切片
全索引
我们平常可能需要使用一个列表中的子列表,也就是部分元素,这个时候我们就需要用到切片这个功能啦
要创建切片,就如同range()函数一样,需要用到元素的索引,如下列所示
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
print(list_1[0:3])
这里打印的切片从索引0到索引3结束,并且不包括索引3,所以只打印了三个元素
['SWS', 'SSN', '慢蜗牛']
我们这里的索引可以随意定义,但是如果超过了列表的最后一个索引会怎么样,大家可以试试
但是注意!!!我们这里是不包含最后一个索引的,遇到最后一个索引就直接退出
半索引
如果我们没有指定第一个索引,python就会自动从列表开头开始
没有指定最后一个索引,python就会自动结束在列表末尾
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
print(list_1[:4])
print(list_1[1:])
['SWS', 'SSN', '慢蜗牛', '小蜗牛']
['SSN', '慢蜗牛', '小蜗牛', '小滴水']
负数索引
我们这里还可以用负数索引来返回列表末尾相应距离的切片
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
print(list_1[-4:])
['SSN', '慢蜗牛', '小蜗牛', '小滴水']
遍历切片
如果要遍历切片,我们可以使用for循环,如:
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
for sws in list_1[:4]:
print(sws.title())
我们这里遍历切片了前四个元素
Sws
Ssn
慢蜗牛
小蜗牛
复制列表
想要复制一个列表,并且复制的列表的改变不会影响原列表,那我们应该怎么办呢,来看看这个方法可不可以
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
list_2 = list_1
list_2.append('追尾的猫')
print(list_2)
print(list_1)
我们这里创建了一个列表,并且把这个列表用赋值符'='给了第二个列表
然后用append()函数来改变第二个列表的值,来看看两个列表是否同时改变
['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水', '追尾的猫']
['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水', '追尾的猫']
结果跟我们想要的大相径庭呀
其实对于列表来说,用'='来操作就相当于让两个指针同时指向了一个对象
当其中一个指针改变这个对象时,因为指向的是同一个对象,所以另一个指针的对象也会改变
那么我们应该怎么来复制一个列表呢,别忘了我们前面讲过的切片呀
list_1 = ['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']
list_2 = list_1[:]
list_2.append('追尾的猫')
print(list_2)
print(list_1)
['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水', '追尾的猫']
['SWS', 'SSN', '慢蜗牛', '小蜗牛', '小滴水']