基本语法:
object[start:end:step=1]
- step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以步长1取值。
- start:开始位置索引。
- end:结束位置索引。
功效:从 start 到 end 按照 step 选取元素作为一个新的对象。(包括 start,不包括 end)
如果只出现出现一个冒号:则为第一个冒号。
Note: 最重要的是 step 操作,它不仅决定了切片的步长,还决定了切片的方向。更进一步的是还会影响 start 和 end 的默认取值。
理解精髓
- step 为正数:切片方向从左到右,start 默认为 0(即为最左边位置索引), end 默认为 length(对象长度,即为最右边位置索引的下一位,(因为取不到 end))。
- step 为负数:切片方向从右到左,start 默认为 length-1(对象长度减一,即为最右边位置索引), end 默认为 -1(即为最左边位置索引的前一位(因为取不到 end))
浅拷贝 or 深拷贝?
a_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b_list = a_list[0:5]
print('Id of a_list:', id(a_list))
print('Id of a_list:', id(b_list))
for i in a_list:
print('%s-th element in a_list: %s' % (i+1, id(i)))
print('*********')
for i in b_list:
print('%s-th element in b_list: %s' % (i+1, id(i)))
结果如下:

最低0.47元/天 解锁文章
107

被折叠的 条评论
为什么被折叠?



