Python:切片操作详解

基本语法:

object[start:end:step=1]
  1. step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以步长1取值。
  2. start:开始位置索引。
  3. 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)))

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值