我不太清楚如何提出这个问题,甚至在Google上搜索答案,但我会在这里写出来.我有一个整数的排序列表,对应于文件中的行号.我想将它们转换为字符串,但对于顺序的数字,我希望字符串具有序列的第一个数字,短划线,然后是最后一个数字.这是一个例子:
line_nums = [ 1, 2, 3, 5, 7, 8, 9, 10 ]
Run Code Online (Sandbox Code Playgroud)
我想将该列表转换为:
[ '1-3', '5', '7', '8-10' ]
Run Code Online (Sandbox Code Playgroud)
我写了一些大部分都有效的代码.在某些序列中,它会将相同的数字放在字符串中两次.在最近执行此代码时,输入是:
[ 10007, 10008, 10009, 10010, 10011, 10013, 10015, 10016, 10017, 10018, 10019 ]
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
[ '10007-10011', '10013-10013', '10015-10019' ]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def get_line_numbers_concat(line_nums):
seq = []
final = []
last = 0
for index, val in enumerate(line_nums):
if last + 1 == val or index == 0:
seq.append(val)
last = val
else:
final.append(str(seq[0]) + '-' + str(seq[len(seq)-1]))
seq = [] …Run Code Online (Sandbox Code Playgroud) python ×1