python - 迭代列表末尾的连续切片时如何获取Python列表的最后一个切片
问题描述
我可能在这里大脑冻结,但是您如何遍历不确定长度列表的最后 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
其他绑定一样,您将获得所有切片:
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]
推荐阅读
- amazon-sagemaker - SageMaker Jupyter(Lab) 中的 VIM(或其他插件)安装
- spring - 在 Spring Boot 多模块项目 fat jar 中未执行 Liquibase 脚本
- python - Keras 在 n 个批次后更新权重
- internet-explorer - 2019 年我还应该支持 Internet Explorer 吗?
- javascript - 如何循环遍历表格并将表单数据动态添加到表格中?
- sql - 多个 Google 表格/工作簿上的 SQL 联合
- php - 在 Laravel 中,统计用户并返回状态
- python - 从多个页面抓取表格并从链接添加数据
- windows - 用于合并多行的批处理脚本
- python - Treeview 更新中的 SELECT 查询结果不正确