我有一個較大的列表,我想對其進(jìn)行分配或以其他方式對較小列表的元素執(zhí)行操作,但只執(zhí)行一次。例如:emailList = ['tom@gmail.com', 'dick@gmail.com', 'harry@gmail.com', 'jane@gmail.com']fileList = ['file_1.zip', 'file_2.zip']我想交替地將 fileList 的元素分配給 emailList 的元素。所以:tom@gmail.com -> file_1.zipdick@gmail.com -> file_2.zipharry@gmail.com -> file_1.zipjane@gmail.com -> file_2.zip我有這個......一半工作(為了簡單起見,我只是使用 print 語句來表示動作): for email in emailList: for file in zippedList: print(email + "will receive " + file) zippedList.pop(0)產(chǎn)量: Email: tom@gmail.com will receive Contest_Packet_1.zip Email: dick@gmail.com will receive Contest_Packet_2.zip當(dāng)然,問題是一旦 zippedList 為空,它就結(jié)束,并且不再進(jìn)行進(jìn)一步的分配。但是,當(dāng)我不彈出較小列表的元素時,較大列表的元素都會獲得分配或以其他方式操作的較小列表中的兩個元素。它產(chǎn)生這樣的結(jié)果: Email: tom@gmail.com will receive Contest_Packet_1.zip Email: tom@gmail.com will receive Contest_Packet_2.zip Email: dick@regula.one will receive Contest_Packet_1.zip Email: dick@regula.one will receive Contest_Packet_2.zip Email: harry@gmail.com will receive Contest_Packet_1.zip Email: harry@gmail.com will receive Contest_Packet_2.zip Email: jane@gmail.com will receive Contest_Packet_1.zip Email: jane@gmail.com will receive Contest_Packet_2.zip當(dāng)然有一種更簡單的方法可以做到這一點。想法?
1 回答

神不在的星期二
TA貢獻(xiàn)1963條經(jīng)驗 獲得超6個贊
可能最簡單的方法是根據(jù)當(dāng)前迭代的索引是否為偶數(shù)來分配值。您可以為此使用enumerate() 。下面的代碼將當(dāng)前列表索引分配給索引變量,并將當(dāng)前電子郵件分配給電子郵件變量?,F(xiàn)在只需單步執(zhí)行并將值一個接一個地分配給列表即可:
emailList = ['tom@gmail.com', 'dick@gmail.com', 'harry@gmail.com', 'jane@gmail.com']
fileList = ['file_1.zip', 'file_2.zip']
for index, email in enumerate(emailList):
? ? ? if index %2 ==0 : # Even numbers
? ? ? ? ? ? print(f"Email: {email}, File: {fileList[0]}")
? ? ? else: # odd numbers
? ? ? ? ? ? print(f"Email: {email}, File: {fileList[1]}")
添加回答
舉報
0/150
提交
取消