我有一个这样的列表,
List1 = [1,2,3,7,8,11,14,15,16]
我想使用python生成一个看起来像新列表的
List2 = ["1:3", "7:8", "11", "14:16"]
我该怎么做,在这里for循环选项。
我不想使用For循环,因为我的列表有3万多个数字。
答案 0 :(得分:1)
您可以使用生成器:
List1 = [1,2,3,7,8,11,14,15,16]
def groups(d):
c, start = [d[0]], d[0]
for i in d[1:]:
if abs(i-start) != 1:
yield c
c = [i]
else:
c.append(i)
start = i
yield c
results = [str(a) if not b else f'{a}:{b[-1]}' for a, *b in groups(List1)]
输出:
['1:3', '7:8', '11', '14:16']