【问题标题】:Python- for each for loop iteration, append into a different listPython-对于每个 for 循环迭代,追加到不同的列表中
【发布时间】:2013-09-16 06:27:33
【问题描述】:

我有一个 for 循环,它获取数据并将其附加到列表中,但是对于 for 循环的每次迭代,我希望它附加到不同的列表中。有没有办法做到这一点?

    value = []
    for i in list:
        value.append(i)

但我想要类似的东西

    for i, num in enumerate(list):
        value_i.append(num)

我该怎么做呢?

【问题讨论】:

  • 保留一个列表。
  • lists = [list1, list2, list3] for i, num in enumerate(list): lists[i].append(num) ?
  • append 表示该列表已经存在。是这样吗?
  • 是的,它们已经存在了。
  • @user2631296 如果它们已经存在,sza 的答案如何正确?

标签: python list for-loop


【解决方案1】:
>>> lst = [1,2,3,4]
>>> [list(x) for x in zip(lst)]
[[1], [2], [3], [4]]

顺便说一句,你不应该使用list 作为变量名。

【讨论】:

    【解决方案2】:

    不列出,但关闭:

    >>> zip([1, 2, 5])
    [(1,), (2,), (5,)]
    

    【讨论】:

      【解决方案3】:

      为什么不简单:

      >>> [ [e] for e in [1, 2, 3] ]
      [[1], [2], [3]]
      

      【讨论】:

        【解决方案4】:

        假设你已经有一个列表集合

        my_lists = [list1, list2, list3, …, listN]
        

        和一个源列表

        my_sources = [val1, val2, val3, …, valN]
        

        你想要的是

        for lst, src in zip(my_lists, my_sources):
            lst.append(src)
        

        你也可以通过索引来做到这一点:

        for i in range(len(lst)):
            my_lists[i].append(my_sources[i])
        

        后者可能看起来不那么 Pythonic,但它的可读性很强,并且可能比 zip 方法更有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          • 2018-03-10
          • 1970-01-01
          • 1970-01-01
          • 2018-11-16
          相关资源
          最近更新 更多