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

反复迭代较小的列表以将元素一次分配给较大的列表?

反复迭代较小的列表以将元素一次分配给较大的列表?

DIEA 2023-09-05 20:34:15
我有一个较大的列表,我想对其进行分配或以其他方式对较小列表的元素执行操作,但只执行一次。例如: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]}")


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

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