使用“-”合并数字 (python)
merge number by using "-" (python)
这是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
请帮帮我的脑子
这应该有效:
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'
这是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
请帮帮我的脑子
这应该有效:
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'