Python 当j有时为0时,如何避免不一致的s[i:-j]切片行为?
我正在创建一个列表的多个切片Python 当j有时为0时,如何避免不一致的s[i:-j]切片行为?,python,python-3.x,slice,Python,Python 3.x,Slice,我正在创建一个列表的多个切片[-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:
[-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])
…因为如果我有许多列表要附加到VAL
,它会变得很混乱
有一种干净的方法可以做到这一点吗?Python切片中这种怪癖的一种解决方法是利用以下事实:
false\u ish\u值或其他值
始终计算为other\u值
0
是布尔上下文中唯一的整数s[n:None]
等同于s[n::][/code>
other_list[-WINDOW-i:(-i or None)]
…只有当
i
(因此-i
)为0
时,切片才会被解释为[-WINDOW-i:None]
(这与[-WINDOW-i:
)相同。您可以添加输入和预期输出。