【问题标题】:How to create and fill a list of lists in a for loop如何在 for 循环中创建和填充列表列表
【发布时间】:2017-11-14 02:37:46
【问题描述】:

我正在尝试使用 for 循环填充列表。这是我目前所拥有的:

newlist = []
for x in range(10):
    for y in range(10):
        newlist.append(y)

在这一点上,我被难住了。我希望循环能给我一个包含 10 个列表的列表。

【问题讨论】:

  • 不,它会给你一个包含 100 个元素的列表

标签: python list for-loop nested-lists


【解决方案1】:
newlist = [list(range(10))] * 10

【讨论】:

    【解决方案2】:

    或者,您只需要一个循环并附加range(10)

    newlist = []
    for x in range(10):
        newlist.append(list(range(10)))
    

    或者

    newlist = [list(range(10)) for _ in range(10)]
    

    【讨论】:

      【解决方案3】:

      你已经接近它了。但是您需要将内部循环中的新元素追加到一个空列表中,该列表将作为外部列表的元素追加。否则,您将获得(从您的代码中可以看到)包含 100 个元素的平面列表。

      newlist = []
      for x in range(10):
          innerlist = []
          for y in range(10):
              innerlist.append(y)
          newlist.append(innerlist)
      
      print(newlist)
      

      请参阅下面 Błotosmętek 的评论以获得更简洁的版本。

      【讨论】:

      • ……无论如何,newlist = [[x for x in range(10)] for y in range(10)] 更简洁。
      【解决方案4】:

      您可以将这一行代码与list comprehension 一起使用以达到相同的结果:

      new_list = [[i for i in range(10)] for j in range(10)]
      

      【讨论】:

      • new_list = [list(range(10)) for _ in range(10)] 可能更简洁,尽管主要基于意见
      • 谢谢@MarkusMeskanen,我的想法是让 OP 变得更简单,并做与他们试图做的完全相同的事情,但使用列表理解:)
      【解决方案5】:

      或者只是嵌套列表理解

      [[x for x in range(10)] for _ in range(10)]
      

      【讨论】:

      • 这本身不会在这里做任何事情。对于那些在两个 for 循环 (OP) 中苦苦挣扎的人,您可能应该添加重要的 new_list = 部分...此外,[list(range(10)) for _ in range(10)] 可能更简洁,尽管主要基于意见。
      【解决方案6】:

      你应该放一个中间列表来获得另一个级别

      newlist = []
      for x in range(10):
          temp_list = []
          for y in range(10):
              temp_list.append(y)
          newlist.append(temp_list)
      

      【讨论】:

        猜你喜欢
        • 2020-05-11
        • 2016-02-23
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        相关资源
        最近更新 更多