亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

迭代具有范圍的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 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號