猿问

迭代具有范围的python列表中的项目列表

我有一个类似这样的列表,里面有一个范围:


我想将其作为逗号分隔值并扩展范围。


当我尝试使用 forloop 遍历列表的项目时,我没有得到想要的结果。


a = ['1','2','3-10','15-20']

b = []

for item in a:

    if '-' in item:

        print('The value of item is :' , item)

        start = item.split('-')[0]

        print('The value of start is :' , start)

        end = item.split('-')[1]

        print('The value of end is :' , end)

        for i in range(int(start),int(end)):

            b.append(i)

    else:

        b.append(item)


print('The value of b is : ', b)

范围不包括最后一个元素。有没有更好的方法来处理这个问题?


神不在的星期二
浏览 191回答 2
2回答

动漫人物

在末尾添加 +1 作为范围排除最后一个数字a = ['1','2','3-10','15-20']b = []for item in a:    if '-' in item:        print('The value of item is :' , item)        start = item.split('-')[0]        print('The value of start is :' , start)        end = item.split('-')[1]        print('The value of end is :' , end)        for i in range(int(start),int(end)+1):            b.append(i)    else:        b.append(item)print('The value of b is : ', b)如果它解决了您的问题,请接受并打勾;)

慕工程0101907

您可以使用嵌套列表推导式:a = ['1','2','3-10','15-20']expanded = [list(range(int(i.split('-')[0]), int(i.split('-')[1])+1)) if '-' in i else [int(i)] for i in a]flatten = ','.join(map(str, [i for sublist in expanded for i in sublist]))返回:1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20
随时随地看视频慕课网APP

相关分类

Python
我要回答