gpt4 book ai didi

python - 从具有连续数字的列表中创建列表列表

转载 作者:行者123 更新时间:2023-11-28 21:48:23 24 4
gpt4 key购买 nike

这是我的 list

a = [ 1, 2, 3, 6, 7, 9, 11, 14, 15, 16]

我想返回一个像这样的新列表

new_a = [ [1,2,3],
[6,7],
[9],
[11],
[14,15,16]
]

我完全不知道如何真正实现这一目标。

这是我尝试过的。请不要笑

#!/usr/env python
a = [1,2,3,5,7,9,10,11,18,12,20,21]
a.sort()
final=[]
first = a.pop(0)
temp=[]
for i in a:
if i - first == 1:
temp.append(first)
temp.append(i)
first=i
else:
final.append(set(temp))
first=i
temp=[]
print final

[set([1, 2, 3]), set([]), set([]), set([9, 10, 11, 12]), set([])]

感谢 stackoverflow,像我这样的菜鸟可以学习 :DDD #CoDeSwAgg

最佳答案

你可以通过一些聪明的 itertools 工作来做到这一点:

[[v[1] for v in vals] for _, vals in itertools.groupby(enumerate(a), key=lambda x: x[1] - x[0])]

更自然地分解它:

result = []
groups = itertools.groupby(enumerate(a), key=lambda x: x[1] - x[0])
for _, values in groups:
result.append([v[1] for v in values])

关于python - 从具有连续数字的列表中创建列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35421604/

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