【问题标题】:Order of For Loops with Python List Comprehension使用 Python 列表理解的 For 循环顺序
【发布时间】:2020-02-28 09:16:12
【问题描述】:

this answer中,声称

记住这一点的最好方法是列表推导式中 for 循环的顺序是基于它们在传统循环方法中出现的顺序。最外层循环首先出现,然后是内层循环。

然而,this answer, 和我自己在下面的实验似乎显示了相反的结果——即内循环首先出现。

在我的示例中,我希望 j 代表行号,而 i 代表列号。我想要 5 行 4 列 请问我缺少什么?

board = [[(j, i) for i in range(4)] for j in range(5)]

# I believe the above comprehension is equivalent to the nested for loops below
# board = []
# for j in range(5):
    # new_row = []
    # for i in range(4):
        # new_row.append((j,i))
    # board.append(new_row)

for j in range(5):
    for i in range(4):
        print(board[j][i], end="")
    print()

【问题讨论】:

  • 注意[[(j, i) for i in range(4)] for j in range(5)][(j, i) for i in range(4) for j in range(5)]之间是有区别的。

标签: python for-loop list-comprehension


【解决方案1】:

这是获得所需输出的正确方法:

board = [(j, i) for i in range(4) for j in range(5)]

输出:-

[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3)]

【讨论】:

  • 我可以看到这适用于一维列表,但我追求的是二维列表或矩阵,由 5 行和 4 列组成。我看到您使用的顺序与我相同 - 内部优先,外部最后,这似乎与引用的答案相矛盾。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2017-03-04
  • 2022-07-27
相关资源
最近更新 更多