【问题标题】:Repeatedly iterating over smaller list to assign elements once to a larger list? [duplicate]反复迭代较小的列表以将元素分配给较大的列表? [复制]
【发布时间】:2021-01-11 06:31:38
【问题描述】:

我有一个较大的列表,我想通过较小列表的元素分配或以其他方式对其执行操作,但只执行一次。例如:

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.zip
dick@gmail.com -> file_2.zip
harry@gmail.com -> file_1.zip
jane@gmail.com -> file_2.zip

我有这个...一半工作(为简单起见,我只是使用打印语句来表示操作):

    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

当然有更简单的方法可以做到这一点。想法?

【问题讨论】:

标签: python


【解决方案1】:

可能最简单的方法是仅根据当前迭代的索引是否为偶数来分配值。您可以为此使用enumerate()。下面的代码将当前列表索引分配给 index 变量,将当前电子邮件分配给 email 变量。现在只需逐步执行并将值一个接一个地分配给列表:

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]}")

【讨论】:

  • 非常感谢,这似乎已经成功了!我以前不熟悉这个功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 2022-01-09
  • 2021-02-02
相关资源
最近更新 更多