我可能在这里脑子一片空白,但是如何迭代不确定长度列表的最后 n 个长度为 d 的切片并仍然获得最后一个切片[-d:]
?
我尝试过的:
In [37]: x = list(range(100))
In [38]: window = 15
In [39]: d = window // 3
In [40]: for i in range(0, window, d):
...: print(i, x[-i-d:-i])
...:
输出:
0 []
5 [90, 91, 92, 93, 94]
10 [85, 86, 87, 88, 89]
我想要什么:
0 [95, 96, 97, 98, 99]
5 [90, 91, 92, 93, 94]
10 [85, 86, 87, 88, 89]
问题当然是在最后一次迭代中,-i
为零而不是None
。我确信有比这更简单的方法:
In [42]: for i in range(0, window, d):
...: if i == 0:
...: print(i, x[-i-d:])
...: else:
...: print(i, x[-i-d:-i])
...:
或者这个:
In [44]: import numpy as np
In [45]: np.array(x)[-window:].reshape((3,-1))
Out[45]:
array([[85, 86, 87, 88, 89],
[90, 91, 92, 93, 94],
[95, 96, 97, 98, 99]])
最佳答案
由于 bool(0)
为 False
,您可以使用 None
作为其他绑定(bind),您将获得所有切片:
for i in range(0, window, d):
print(i, x[-i - d:-i or None])
0 [95, 96, 97, 98, 99]
5 [90, 91, 92, 93, 94]
10 [85, 86, 87, 88, 89]
关于python - 如何在迭代列表末尾的连续切片时获取 Python 列表的最后一个切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58864597/