这个 python for 循环在列表中有一个循环是如何工作的?
how does this python for loop with a loop inside the list work?
谁能解释一下这个循环是如何工作的?
test = ['x' for i in range(9)]
for row in [test[i*3: (i+1)*3] for i in range(3)]:
print('1 ' + ' 2 '.join(row) + ' 3')
我认为输出是:
1 2 x 3
1 2 x 3
1 2 x 3
我无法理解它如何在 1 和 2 之间插入 'x'。
让我们一步步来。
test = ['x' for i in range(9)]
。 test
这是一个包含 9 'x'
s
的列表
[test[i*3: (i+1)*3] for i in range(3)]
。让我们将此列表称为 temp_list。此列表理解采用 test
列表的一部分。对于 i
等于 0,切片将为 test[0: 3]
,等于 ['x', 'x', 'x']
。对于 i
等于 1,切片将为 test[3: 6]
但包含与以前相同的值。
现在 for row in ...
。这将遍历我们指定的 temp_list 以更好地表示。所以这个循环会迭代3次,每次row
都会是['x', 'x', 'x']
。所以print(..)
会重复3次
print('1 ' + ' 2 '.join(row) + ' 3')
。 str.join()
实际上将可迭代对象(这里是一个名为 row
的列表)的每个元素与 str
(这里是“2”)连接起来,作为它们之间的分隔符。因此,这里的 ' 2 'join(row)
将产生输出 x 2 x 2 x
,最后 print()
将输出 1 x 2 x 2 x 3
.
因此最终输出将是 -
1 x 2 x 2 x 3
1 x 2 x 2 x 3
1 x 2 x 2 x 3
好吧,打印第一行你会在一个列表中看到九个 x,所以我们正在生成一个列表
test = ['x' for i in range(9)]
print(test)
输出:
['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']
接下来:您可以简单地用两个循环编写它,在第一个循环中最多循环 3 次。让我们再次打印以了解。
for i in range(3):
print(test[i*3: (i+1)*3])
输出:
['x', 'x', 'x']
['x', 'x', 'x']
['x', 'x', 'x']
正如您从该输出中看到的那样,我们得到了三行,每行具有三个 x 数。
然后,可以像这样循环打印不同的东西:
for i in range(3):
for row in [test[i*3: (i+1)*3]]:
print('1 ' + ' 2 '.join(row) + ' 3')
输出:
1 x 2 x 2 x 3
1 x 2 x 2 x 3
1 x 2 x 2 x 3
我希望它现在有意义!如果您需要其他任何具体解释,请告诉我?
谁能解释一下这个循环是如何工作的?
test = ['x' for i in range(9)]
for row in [test[i*3: (i+1)*3] for i in range(3)]:
print('1 ' + ' 2 '.join(row) + ' 3')
我认为输出是:
1 2 x 3
1 2 x 3
1 2 x 3
我无法理解它如何在 1 和 2 之间插入 'x'。
让我们一步步来。
的列表test = ['x' for i in range(9)]
。test
这是一个包含 9'x'
s[test[i*3: (i+1)*3] for i in range(3)]
。让我们将此列表称为 temp_list。此列表理解采用test
列表的一部分。对于i
等于 0,切片将为test[0: 3]
,等于['x', 'x', 'x']
。对于i
等于 1,切片将为test[3: 6]
但包含与以前相同的值。现在
for row in ...
。这将遍历我们指定的 temp_list 以更好地表示。所以这个循环会迭代3次,每次row
都会是['x', 'x', 'x']
。所以print(..)
会重复3次print('1 ' + ' 2 '.join(row) + ' 3')
。str.join()
实际上将可迭代对象(这里是一个名为row
的列表)的每个元素与str
(这里是“2”)连接起来,作为它们之间的分隔符。因此,这里的' 2 'join(row)
将产生输出x 2 x 2 x
,最后print()
将输出1 x 2 x 2 x 3
.
因此最终输出将是 -
1 x 2 x 2 x 3
1 x 2 x 2 x 3
1 x 2 x 2 x 3
好吧,打印第一行你会在一个列表中看到九个 x,所以我们正在生成一个列表
test = ['x' for i in range(9)]
print(test)
输出:
['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']
接下来:您可以简单地用两个循环编写它,在第一个循环中最多循环 3 次。让我们再次打印以了解。
for i in range(3):
print(test[i*3: (i+1)*3])
输出:
['x', 'x', 'x']
['x', 'x', 'x']
['x', 'x', 'x']
正如您从该输出中看到的那样,我们得到了三行,每行具有三个 x 数。
然后,可以像这样循环打印不同的东西:
for i in range(3):
for row in [test[i*3: (i+1)*3]]:
print('1 ' + ' 2 '.join(row) + ' 3')
输出:
1 x 2 x 2 x 3
1 x 2 x 2 x 3
1 x 2 x 2 x 3
我希望它现在有意义!如果您需要其他任何具体解释,请告诉我?