首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代python列表中的项列表,该列表具有以下范围

迭代python列表中的项列表,该列表具有以下范围
EN

Stack Overflow用户
提问于 2018-12-10 05:48:25
回答 2查看 48关注 0票数 2

我有这样的清单,里面有一个范围:

我想把它作为一个逗号单独的值,并扩展范围。

当我尝试使用for循环迭代列表中的项时,我没有得到想要的结果。

代码语言:javascript
运行
复制
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)

范围不包括最后一个元素。有什么更好的方法来处理这事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-10 06:03:50

您可以使用嵌套列表理解:

代码语言:javascript
运行
复制
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]))

返回:

代码语言:javascript
运行
复制
1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20
票数 0
EN

Stack Overflow用户

发布于 2018-12-10 05:52:07

添加+1结尾,因为范围排除最后一个数字

代码语言:javascript
运行
复制
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)

如果解决了你的问题,请接受并勾选;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53700143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档