小编rgu*_*014的帖子

用破折号写出数字范围

我不太清楚如何提出这个问题,甚至在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

5
推荐指数
1
解决办法
1548
查看次数

标签 统计

python ×1