she*_*ell 8 python slice python-3.x
我正在创建一个[-WINDOW-i:-i]
列表的多个切片,其中的i
范围在32
和之间0
:
vals = []
for i in range(32, -1, -1):
vals.append(other_list[-WINDOW-i:-i])
Run Code Online (Sandbox Code Playgroud)
何时i == 0
,返回长度为0的切片:
other_list[-WINDOW-0:0]
Run Code Online (Sandbox Code Playgroud)
我不想这样做来解决它:
vals = []
for i in range(32, -1, -1):
if i == 0:
vals.append(other_list[-WINDOW:])
else:
vals.append(other_list[-WINDOW-i:-i])
Run Code Online (Sandbox Code Playgroud)
...因为如果我要附加许多列表vals
,它会变得混乱.
有干净的方法吗?
Zer*_*eus 10
Python切片中这个怪癖的一个解决方法是利用这些事实:
false_ish_value or other_value
总是评估为 other_value
0
是布尔上下文中唯一的false-ish整数s[n:None]
相当于 s[n:]
考虑到这些,您可以将切片写为:
other_list[-WINDOW-i:(-i or None)]
Run Code Online (Sandbox Code Playgroud)
...并且只有在(因此)时,切片才会被解释为[-WINDOW-i:None]
(它是相同的).[-WINDOW-i:]
i
-i
0
归档时间: |
|
查看次数: |
145 次 |
最近记录: |