这是python
temp_list=['1','2','3','5','7','8']
temp_list.sort()
print temp_list
test=""
first=""
last=""
start=0
for i in range(len(temp_list)):
if i==0:
None
else:
if (int(temp_list[i-1])+1)==int(temp_list[i]):
print temp_list[i-1]
print temp_list[i]
if start==0:
first=temp_list[i-1]
last=temp_list[i]
start=1;
else:
last=temp_list[i]
if len(temp_list)==i+1:
if start==0:
test+=(temp_list[i-1]+","+temp_list[i])
else:
if len(test)!=0:#add
test+=(","+first+"-"+last)
start=0
else:
test+=(first+"-"+last)
start=0
else:
if start==0:
test+=(temp_list[i-1]+","+temp_list[i])
else:
if len(test)!=0:#add
test+=(","+first+"-"+last)
start=0
else:
test+=(first+"-"+last)
start=0
print test
这是示例代码 这个结果 - > 1-35,7,7-8
我想转换后面的数字集:
EX1) [' 1',' 2',' 3',' 5',' 7',' 8'] - > 1-3,5,7-8
EX2) [' 0',' 2',' 3',' 4',' 5',' 7',' 8'] - > 0,2-5,7-8
请帮助我的大脑
答案 0 :(得分:2)
这应该有效:
def ints_to_ranges(l):
if not l: return ""
l = sorted(set(int(n) for n in l))
ranges = [[l[0], l[0]]]
for n in l[1:]:
if n - 1 == ranges[-1][1]:
ranges[-1][1] += 1
else:
ranges.append([n, n])
return ",".join(r[0] == r[1] and str(r[0]) or "{}-{}".format(*r) for r in ranges)
它的工作原理是删除重复的数字,对它们进行排序,构建一个范围列表,然后格式化它们。例如:
>>> ints_to_ranges(['1', '2', '3', '5', '7', '8'])
'1-3,5,7-8'
>>> ints_to_ranges(['0', '2', '3', '4', '5', '7', '8'])
'0,2-5,7-8'