首页 文章

迭代具有范围的python列表中的Items列表

提问于
浏览
2

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

我想以扩展范围的逗号分隔值得到它 .

虽然我尝试使用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)

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

2 回答

  • 0

    您可以使用嵌套列表推导:

    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
    
  • 1

    最后添加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)
    

    请接受并勾选它是否能解决您的问题;)

相关问题