我在python中有问题。
我有一个排序的数字列表,例如[1,2,3,4,5]。 如果排序的数字是连续或连续的,我需要获取一个字符串,指定范围为“ 1-5”。
谢谢 吉里什
答案 0 :(得分:1)
您可以使用more_itertools
import more_itertools
a=[1,2,3,4,5,8,9,10,12,13,14,15]
to_range = ["{}-{}".format(groups[0],groups[-1]) for groups in map(list,more_itertools.consecutive_groups(a))]
#['1-5', '8-10', '12-15']
如果范围必须包含至少2个元素(即[1] 1-1不允许),则可以添加条件:
to_range = ["{}-{}".format(groups[0],groups[-1]) for groups in map(list,more_itertools.consecutive_groups(a)) if groups[0] != groups[-1]]
答案 1 :(得分:0)
鉴于l = [1,2,3,4,5]
,您可以在对包含列表中第一项和最后一项的输出进行格式化之前,先进行以下条件检查,看看它是否包含一个连续的整数列表:
if l == list(range(l[0], l[-1] + 1)):
print('{}-{}'.format(l[0], l[-1]))
答案 2 :(得分:0)
first = my_list[0]
last = my_list[-1]
text = f'{first}-{last}'