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

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

如何循環遍歷列表并使用“zip()”將一項添加到元組列表中的每個元組?

如何循環遍歷列表并使用“zip()”將一項添加到元組列表中的每個元組?

梵蒂岡之花 2023-12-09 17:04:44
我的數據文件包含八千行,其中每一行都是一個元組。前兩行是:(2000, 1, 1, 1, 336)(2000, 1, 1, 2, 335)我想重復循環工作日并將工作日附加到每個數據元組。行列表應如下所示:[(2000, 1, 1, 1, 336, 'Sat'), (2000, 1, 1, 2, 335, 'Sun'), ...]我嘗試了不同的方法,并設法獲得了除所需組合之外的幾乎所有可能的組合。我無法完全理解我所誤解的事情。代碼weekdays = ['Sat','Sun','Mon','Tue','Wed','Thu','Fri']    a = read_file('VIK_sealevel_2000.txt')zipp = list(zip(a, weekdays))print(zipp[0:2])   輸出[((2000, 1, 1, 1, 335), 'Sat'), ((2000, 1, 1, 2, 336), 'Sun')]
查看完整描述

2 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

第一個問題是如何高效地循環度過工作日。一個干凈的解決方案是使用itertools.cycle().


以下將生成無限重復的工作日序列。


import itertools


weekdays = ['Sat','Sun','Mon','Tue','Wed','Thu','Fri']

itertools.cycle(weekdays)

zip()當最短輸入可迭代用完時,該函數將停止?,F在我們有無限的工作日序列,最短的輸入將是八千行數據。


>>> import itertools

>>> weekdays = ['Sat','Sun','Mon','Tue','Wed','Thu','Fri']

>>> data = [(2000, 1, 1, 1, 336), (2000, 1, 1, 2, 335), (2000, 1, 1, 1, 334), 

            (2000, 1, 1, 2, 333), (2000, 1, 1, 1, 332), (2000, 1, 1, 2, 331), 

            (2000, 1, 1, 1, 330), (2000, 1, 1, 2, 329), (2000, 1, 1, 1, 328), 

            (2000, 1, 1, 2, 327)]

>>> list(zip(data, itertools.cycle(weekdays)))

[((2000, 1, 1, 1, 336), 'Sat'), ((2000, 1, 1, 2, 335), 'Sun'), 

 ((2000, 1, 1, 1, 334), 'Mon'), ((2000, 1, 1, 2, 333), 'Tue'), 

 ((2000, 1, 1, 1, 332), 'Wed'), ((2000, 1, 1, 2, 331), 'Thu'), 

 ((2000, 1, 1, 1, 330), 'Fri'), ((2000, 1, 1, 2, 329), 'Sat'), 

 ((2000, 1, 1, 1, 328), 'Sun'), ((2000, 1, 1, 2, 327), 'Mon')]

最后,為了獲取內部元組中的工作日,我們可以在列表理解中創建新的元組。


>>> [t + (day,) for t, day in zip(data, itertools.cycle(weekdays))]

[(2000, 1, 1, 1, 336, 'Sat'), (2000, 1, 1, 2, 335, 'Sun'), 

 (2000, 1, 1, 1, 334, 'Mon'), (2000, 1, 1, 2, 333, 'Tue'), 

 (2000, 1, 1, 1, 332, 'Wed'), (2000, 1, 1, 2, 331, 'Thu'), 

 (2000, 1, 1, 1, 330, 'Fri'), (2000, 1, 1, 2, 329, 'Sat'), 

 (2000, 1, 1, 1, 328, 'Sun'), (2000, 1, 1, 2, 327, 'Mon')]

這里,t是與每行數據關聯的元組,day是工作日,并且語法t + (day,)創建通過將數據元組與工作日組合形成的新元組。


查看完整回答
反對 回復 2023-12-09
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

要將工作日添加到每個元組中,請嘗試使用:


a = [(2000, 1, 1, 1, 335), (2000, 1, 1, 2, 336)] # was read_file('VIK_sealevel_2000.txt')

weekdays = ['Sat','Sun','Mon','Tue','Wed','Thu','Fri']

zipp = [row[0] + (row[1],) for row in zip(a, weekdays)]


查看完整回答
反對 回復 2023-12-09
  • 2 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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