在带有嵌套 enumerate() 的 for 循环中添加第二个参数有什么作用?
What does adding a second parameter in a for loop with nested enumerate() do?
我再次尝试 Python,我想创建一个基于文本的 Ticktacktoe。
目前,我正在设计布局,其中 0 代表游戏中的空 space,而 coordinates.This 的顶部和左侧的数字是我目前所拥有的:
game = [[0, 0, 0],
[0, 0, 0],
[0, 0, 0],]
print(' 0 1 2')
for row in enumerate(game):
print(row)
输出这个:
0 1 2
(0, [0, 0, 0])
(1, [0, 0, 0])
(2, [0, 0, 0])
问题是我希望它看起来像这样:
0 1 2
0 [0, 0, 0]
1 [0, 0, 0]
2 [0, 0, 0]
现在我找到了一种方法,将 'count' 添加到 for 循环中。但我根本不明白为什么。
查找 Python 文档没有帮助。
为什么会这样?为什么去掉括号和逗号?
game = [[0, 0, 0],
[0, 0, 0],
[0, 0, 0],]
print(' 0 1 2')
for count, row in enumerate(game):
print(count, row)
编辑:我想我理解 now.Since enumarate()
returns 索引和值 基本上发生的所有事情是我将 count
分配给索引和行基本价值?这就是为什么现在有括号,因为 print 使用 space 打印了不止 1 个变量?你能确认一下吗?
for row in enumerate(game):
这将打印 row
,这是一个元组。元组以格式打印
(item1, item2, ...)
示例:
>>> row = (5, [0,0,0])
>>> print(row)
(5, [0,0,0])
for count, row in enumerate(game):
在这里,结果被解包。什么是元组现在拆分为 count
和 row
。 print
可以接受可变数量的参数,默认情况下它用 space.
分隔它们
示例:
>>> count = 5
>>> row = [0,0,0]
>>> print(count, row)
5 [0,0,0]
嵌套列表
嵌套列表是包含其他列表的列表。一个简单的例子是
nested = [[0,1,2], [3,4,5]]
您可以解压缩嵌套列表(或任何列表)
list012, list345 = nested
这就是 for count, row in enumerate(game):
正在做的事情。
enumerate(game)
returns 一个元组:一个计数器和普通对象。我们可以这样比较:
my_list = [10,20,30]
for i in my_list:
print i # prints 10 20 30
for i in enumerate(my_list):
print i # prints (0,10) (1,20) (2,30)
在第一个示例中,一个元组将被传递给 print()
,它被打印在括号中。在第二个答案中,行数和行本身作为单独的参数传递给 print()
- print()
然后将打印参数 space 分开。
enumerate(items)
returns 一个数字和您的项目的元组列表,列表中每增加一个新项目(计数),数字就会增加一个。
在这种情况下枚举 returns 以下元组:
{0, [0, 0, 0]}, {1, [0, 0, 0]}, {2, [0, 0, 0]}
通过在 for 循环中使用第二个变量名称,您可以将元组解构为 count
和 row
。而之前你只给了 1 个变量名,所以这个变量被分配了整个元组。
我再次尝试 Python,我想创建一个基于文本的 Ticktacktoe。
目前,我正在设计布局,其中 0 代表游戏中的空 space,而 coordinates.This 的顶部和左侧的数字是我目前所拥有的:
game = [[0, 0, 0],
[0, 0, 0],
[0, 0, 0],]
print(' 0 1 2')
for row in enumerate(game):
print(row)
输出这个:
0 1 2
(0, [0, 0, 0])
(1, [0, 0, 0])
(2, [0, 0, 0])
问题是我希望它看起来像这样:
0 1 2
0 [0, 0, 0]
1 [0, 0, 0]
2 [0, 0, 0]
现在我找到了一种方法,将 'count' 添加到 for 循环中。但我根本不明白为什么。 查找 Python 文档没有帮助。 为什么会这样?为什么去掉括号和逗号?
game = [[0, 0, 0],
[0, 0, 0],
[0, 0, 0],]
print(' 0 1 2')
for count, row in enumerate(game):
print(count, row)
编辑:我想我理解 now.Since enumarate()
returns 索引和值 基本上发生的所有事情是我将 count
分配给索引和行基本价值?这就是为什么现在有括号,因为 print 使用 space 打印了不止 1 个变量?你能确认一下吗?
for row in enumerate(game):
这将打印 row
,这是一个元组。元组以格式打印
(item1, item2, ...)
示例:
>>> row = (5, [0,0,0])
>>> print(row)
(5, [0,0,0])
for count, row in enumerate(game):
在这里,结果被解包。什么是元组现在拆分为 count
和 row
。 print
可以接受可变数量的参数,默认情况下它用 space.
示例:
>>> count = 5
>>> row = [0,0,0]
>>> print(count, row)
5 [0,0,0]
嵌套列表
嵌套列表是包含其他列表的列表。一个简单的例子是
nested = [[0,1,2], [3,4,5]]
您可以解压缩嵌套列表(或任何列表)
list012, list345 = nested
这就是 for count, row in enumerate(game):
正在做的事情。
enumerate(game)
returns 一个元组:一个计数器和普通对象。我们可以这样比较:
my_list = [10,20,30]
for i in my_list:
print i # prints 10 20 30
for i in enumerate(my_list):
print i # prints (0,10) (1,20) (2,30)
在第一个示例中,一个元组将被传递给 print()
,它被打印在括号中。在第二个答案中,行数和行本身作为单独的参数传递给 print()
- print()
然后将打印参数 space 分开。
enumerate(items)
returns 一个数字和您的项目的元组列表,列表中每增加一个新项目(计数),数字就会增加一个。
在这种情况下枚举 returns 以下元组:
{0, [0, 0, 0]}, {1, [0, 0, 0]}, {2, [0, 0, 0]}
通过在 for 循环中使用第二个变量名称,您可以将元组解构为 count
和 row
。而之前你只给了 1 个变量名,所以这个变量被分配了整个元组。