Python 3: 带字典的for循环语法
Python 3: for loop syntax with dictionary
以下代码片段有效:
param = {}
for nround_counter in [1,2,3]:
{
print(nround_counter)
#param = {'objective' : 'multi:softmax'}
}
但以下不是:
param = {}
for nround_counter in [1,2,3]:
{
print(nround_counter)
param = {'objective' : 'multi:softmax'}
}
给出的错误是无效语法。我是 Python 的新手,正在寻求有关调试上述内容的帮助。
谢谢。
循环、函数、类 等代码主体未用大括号括在 Python 中。缩进决定了代码结构。
for nround_counter in [1, 2, 3]:
print(nround_counter)
param = {'object' : 'multi:softmax'}
你在这里混淆了很多不同的问题。
这是您的第一个示例,使用通常用于 Python:
的空格呈现
#!python3
param = {}
for nround_counter in [1,2,3]:
{ print(nround_counter) }
请注意,这是对一系列语句的迭代,该语句(无用且令人困惑)被编码为一组文字构造函数表达式,并因其副作用而被调用(调用 print 函数)。它没有修改任何状态,但它被评估为一个集合,在循环的每次迭代中包含 None
单例作为其唯一元素。
这不是特殊语法。这只是Python的set literal构造语法的一种难以理解的用法。
也完全不清楚您要完成什么。遍历一个列表,不断地将 param
一遍又一遍地绑定到相同的文字字典内容是没有意义的。
也许如果您想构建某种 table?
param = dict()
for n in range(1,4):
print(n)
param['objective%s'%n] = 'multi:softmax'
...或类似的东西。请注意,我用 dict()
而不是文字 {}
来初始化 param
,因为我认为它更简洁、更清晰,即使稍微冗长一点。此外,我使用 range(1,4)
而不是您的文字列表,同样是因为它更简洁。我在这个循环主体中所做的事情很愚蠢,但它是您可以做的事情的一个例子。
请注意,我正在为每次通过循环生成一个唯一键(一个常量字符串文字,其中插值了我的迭代器变量的字符串表示形式)。人们通常会期望这些值也能以某种方式动态计算或导出;但我不知道这是怎么回事,因为没有想到明确的教学示例。
以下代码片段有效:
param = {}
for nround_counter in [1,2,3]:
{
print(nround_counter)
#param = {'objective' : 'multi:softmax'}
}
但以下不是:
param = {}
for nround_counter in [1,2,3]:
{
print(nround_counter)
param = {'objective' : 'multi:softmax'}
}
给出的错误是无效语法。我是 Python 的新手,正在寻求有关调试上述内容的帮助。
谢谢。
循环、函数、类 等代码主体未用大括号括在 Python 中。缩进决定了代码结构。
for nround_counter in [1, 2, 3]:
print(nround_counter)
param = {'object' : 'multi:softmax'}
你在这里混淆了很多不同的问题。
这是您的第一个示例,使用通常用于 Python:
的空格呈现#!python3
param = {}
for nround_counter in [1,2,3]:
{ print(nround_counter) }
请注意,这是对一系列语句的迭代,该语句(无用且令人困惑)被编码为一组文字构造函数表达式,并因其副作用而被调用(调用 print 函数)。它没有修改任何状态,但它被评估为一个集合,在循环的每次迭代中包含 None
单例作为其唯一元素。
这不是特殊语法。这只是Python的set literal构造语法的一种难以理解的用法。
也完全不清楚您要完成什么。遍历一个列表,不断地将 param
一遍又一遍地绑定到相同的文字字典内容是没有意义的。
也许如果您想构建某种 table?
param = dict()
for n in range(1,4):
print(n)
param['objective%s'%n] = 'multi:softmax'
...或类似的东西。请注意,我用 dict()
而不是文字 {}
来初始化 param
,因为我认为它更简洁、更清晰,即使稍微冗长一点。此外,我使用 range(1,4)
而不是您的文字列表,同样是因为它更简洁。我在这个循环主体中所做的事情很愚蠢,但它是您可以做的事情的一个例子。
请注意,我正在为每次通过循环生成一个唯一键(一个常量字符串文字,其中插值了我的迭代器变量的字符串表示形式)。人们通常会期望这些值也能以某种方式动态计算或导出;但我不知道这是怎么回事,因为没有想到明确的教学示例。