gpt4 book ai didi

python - 如何在迭代列表末尾的连续切片时获取 Python 列表的最后一个切片

转载 作者:行者123 更新时间:2023-12-02 23:01:18 25 4
gpt4 key购买 nike

我可能在这里脑子一片空白,但是如何迭代不确定长度列表的最后 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com