为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2021-09-11 20:12:10
我有一个类似这样的列表,里面有一个范围:我想将其作为逗号分隔值并扩展范围。当我尝试使用 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 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

在末尾添加 +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)

如果它解决了您的问题,请接受并打勾;)


查看完整回答
反对 回复 2021-09-11
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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


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


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信