我有一个较大的列表,我想对其进行分配或以其他方式对较小列表的元素执行操作,但只执行一次。例如: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)产量: Email: tom@gmail.com will receive Contest_Packet_1.zip Email: dick@gmail.com will receive Contest_Packet_2.zip当然,问题是一旦 zippedList 为空,它就结束,并且不再进行进一步的分配。但是,当我不弹出较小列表的元素时,较大列表的元素都会获得分配或以其他方式操作的较小列表中的两个元素。它产生这样的结果: 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当然有一种更简单的方法可以做到这一点。想法?
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
可能最简单的方法是根据当前迭代的索引是否为偶数来分配值。您可以为此使用enumerate() 。下面的代码将当前列表索引分配给索引变量,并将当前电子邮件分配给电子邮件变量。现在只需单步执行并将值一个接一个地分配给列表即可:
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
提交
取消