同时使用起止下标与步进会让切片很难懂。
方括号里面写三个值显得太过拥挤,读起来不大容易,而且在指定了步进值(尤其是负数步进值)的时候,我们必须很仔细地考虑:
- 这究竟是从前往后取,还是从后往前取?
somelist[start:end:stride]
取奇数位置与偶数位置
x = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
odds = x[::2]
evens = x[1::2]
print(odds)
print(evens)
反转字符串(非字节数据)
对 bytes 类型的字符串
x = b'mongoose'
y = x[::-1]
print(y)
Unicode 形式的字符串
x = '寿司'
y = x[::-1]
print(y)
把字符串编码成 UTF-8 标准的字节数据,就不能用这个技巧来反转了
w = '寿司'
x = w.encode('utf-8')
y = x[::-1]
z = y.decode('utf-8')
print(z)
晦涩难懂,不建议
x = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
x[2::2] # ['c', 'e', 'g']
x[-2::-2] # ['g', 'e', 'c', 'a']
x[-2:2:-2] # ['g', 'e']
x[2:2:-2] # []