为了账号安全,请及时绑定邮箱和手机立即绑定

使用列表理解将列表拆分为较小的列表,其中每个较小的列表随后变小

使用列表理解将列表拆分为较小的列表,其中每个较小的列表随后变小

小唯快跑啊 2021-06-29 18:35:53
我有一个列表,我想将它拆分为一个列表列表,以便新列表中的每个列表都小一个元素。例如:exampleList = [1,2,3,4,5,6,7,8,9,10]newList = [[1,2,3,4,5,6,7,8,9,10],       [2,3,4,5,6,7,8,9,10],       [3,4,5,6,7,8,9,10],       [4,5,6,7,8,9,10],       [5,6,7,8,9,10],       [6,7,8,9,10],       [7,8,9,10],       [8,9,10],       [9,10]]有没有一种简单的方法可以通过列表理解来做到这一点?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以使用切片和列表理解。


>>> [exampleList[i:] for i in range(len(exampleList) - 1)] 

[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [2, 3, 4, 5, 6, 7, 8, 9, 10], [3, 4, 5, 6, 7, 8, 9, 10], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10]]

exampleList[i:]将获取从当前索引i到末尾的所有元素。如果要包含[10]在结果中,请- 1在调用中省略len。


查看完整回答
反对 回复 2021-07-13
?
哔哔one

TA贡献1854条经验 获得超8个赞

使用@timgeb 解决方案,替代版本可能是

res = [lst[i:] for i, _ in enumerate(lst[:-1])]

其他可能使用 map

res = list(map(lambda x: lst[x-1:], lst[:-1]))
# [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [2, 3, 4, 5, 6, 7, 8, 9, 10], [3, 4, 5, 6, 7, 8, 9, 10], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10]]



查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信