python: 切片符号(slice notation)

总结

正序

GrammarAnnotation
L[:][seq[0], seq[1], …, seq[-1] ]
L[low:][seq[low], seq[low+1], …, seq[-1] ]
L[:high][seq[0], seq[1], …, seq[high-1]]
L[low:high][seq[low], seq[low+1], …, seq[high-1]]
L[::stride][seq[0], seq[stride], …, seq[-1] ]
L[low::stride][seq[low], seq[low+stride], …, seq[-1] ]
L[:high:stride][seq[0], seq[stride], …, seq[high-1]]
L[low:high:stride][seq[low], seq[low+stride], …, seq[high-1]]

逆序

GrammarAnnotation
L[::-stride][seq[-1], seq[-1-stride], …, seq[0] ]
L[high::-stride][seq[high], seq[high-stride], …, seq[0] ]
L[:low:-stride][seq[-1], seq[-1-stride], …, seq[low+1]]
L[high:low:-stride][seq[high], seq[high-stride], …, seq[low+1]]

实验代码

# coding=utf-8

L = [0, 10, 20, 30, 40, 50]
low, high, stride = 1, 4, 2

# 正序
assert L[:] == [0, 10, 20, 30, 40, 50] # [seq[0],   seq[1],          ..., seq[-1]    ]
assert L[low:] == [10, 20, 30, 40, 50] # [seq[low], seq[low+1],      ..., seq[-1]    ]
assert L[:high] == [0, 10, 20, 30]     # [seq[0],   seq[1],          ..., seq[high-1]]
assert L[low:high] == [10, 20, 30]     # [seq[low], seq[low+1],      ..., seq[high-1]]
assert L[::stride] == [0, 20, 40]      # [seq[0],   seq[stride],     ..., seq[-1]    ]
assert L[low::stride] == [10, 30, 50]  # [seq[low], seq[low+stride], ..., seq[-1]    ]
assert L[:high:stride] == [0, 20]      # [seq[0],   seq[stride],     ..., seq[high-1]]
assert L[low:high:stride] == [10, 30]  # [seq[low], seq[low+stride], ..., seq[high-1]]

# 逆序
assert L[::-stride] == [50, 30, 10]    # [seq[-1],   seq[-1-stride],   ..., seq[0]    ]
assert L[high::-stride] == [40, 20, 0] # [seq[high], seq[high-stride], ..., seq[0]    ]
assert L[:low:-stride] == [50, 30]     # [seq[-1],   seq[-1-stride],   ..., seq[low+1]]
assert L[high:low:-stride] == [40, 20] # [seq[high], seq[high-stride], ..., seq[low+1]]
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值