我正在创建列表[-WINDOW-i:-i]
的多个切片,其中i
的范围介于32
和0
之间:
vals = []
for i in range(32, -1, -1):
vals.append(other_list[-WINDOW-i:-i])
当i == 0
时,返回一个长度为0的切片:
other_list[-WINDOW-0:0]
我不想这样做来解决它:
vals = []
for i in range(32, -1, -1):
if i == 0:
vals.append(other_list[-WINDOW:])
else:
vals.append(other_list[-WINDOW-i:-i])
...因为如果我有很多要附加到vals
的列表,那就太乱了。
有干净的方法吗?
答案 0 :(得分:9)
Python切片中这个怪癖的一个解决方法是利用这些事实:
false_ish_value or other_value
始终评估为other_value
0
是布尔上下文中唯一的false-ish整数s[n:None]
相当于s[n:]
考虑到这些,您可以将切片写为:
other_list[-WINDOW-i:(-i or None)]
...只有当[-WINDOW-i:None]
(因此[-WINDOW-i:]
)为i
时,切片才会被解释为-i
(与0
相同)