书本4.4——使用列表的一部分
作业图一,切片
切片不是列表特有,python中的有序序列如字符串、元组都支持切片。切片的返回结果类型和切片对象类型一致,返回的是切片对象的子序列,如:列表切片返回一个列表,字符串切片返回字符串。
函数原型:
list[start : end : step]
参数含义:
start:切片起点索引,默认从0开始。
end:切片终点索引,但切片结果不包括终点索引的值。
step:步长,默认是1。
具体的几个例子:
start end step 截取列表全部二,遍历列表
之前做过一些for循环语句整理
这里又可以增加一些列表部分的内容了,即遍历列表的部分元素,在for循环语句中使用切片。
遍历前四名队员 遍历前三名队员可以发现与前面的切片输出不同,这里索引到了切片的最后一个位置,包括了end这个元素。
三,复制列表
复制列表的四种简单方法:
1、a[ : ]
2、list(a)
3、a*1
4、copy.copy(a)
a[ : ] list(a) a*1copy.copy(a)
以上方法只适用于简单列表,也就是列表中的元素都是基本类型,如果列表元素还存在列表的话,这种方法就不适用了。原因就是,象a[:]这种处理,只是将列表元素的值生成一个新的列表,如果列表元素也是一个列表,如:a=[1,2,3,[6]],那么这种复制对于元素[6]的处理只是复制[6]的引用,而并未生成 [6]的一个新的列表复制。
简单复制方法(一) 简单复制方法(二)以上四种简单复制方法都没能生成[6]的一个新的列表的复制。使用 a[:], list(a), a*1, copy.copy(a)四种方式复制列表结果都可以得到一个新的列表,但是如果列表中含有列表,所有b, c, d, e四个新列表的子列表都是指引到同一个对象上。
copy.deepcopy(a)使用copy.deepcopy(a)方法得到的新列表 f才是包括子列表在内的完全复制。
copy拷贝一个对象,但是对象的属性还是引用原来的,deepcopy拷贝一个对象,把对象里面的属性也做了拷贝,deepcopy之后完全是另一个对象了。
当需要一个新的列表,并且对这个新的列表进行操作,同时不想影响原来的列表时,就可以使用这个方法。
网友评论