使用Python列表理解的For循环的顺序

使用Python列表理解的For循环的顺序,python,for-loop,list-comprehension,Python,For Loop,List Comprehension,在这方面,据称: 记住这一点的最好方法是,列表理解中for循环的顺序基于它们在传统循环方法中出现的顺序。最外层的循环首先出现,然后是内部循环 然而,下面我自己的实验似乎显示了相反的情况——即,内部循环首先出现 在我的示例中,我希望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 th

在这方面,据称:

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

然而,下面我自己的实验似乎显示了相反的情况——即,内部循环首先出现

在我的示例中,我希望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()

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

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

请注意,范围(4)中的i的
[(j,i)]与范围(5)中的j的
[(j,i)与范围(5)中的j的
[(j,i)与范围(4)中的i的
[(j,i)]之间存在差异。我可以看出,这适用于1d列表,但我需要的是一个2d列表或矩阵,由5行4列组成。我知道你使用了和我一样的顺序——内部第一,外部最后,这似乎与引用的答案相矛盾。