我想使用 for 循环动态命名变量,为变量赋值,然后将变量添加到列表中。
这是 Tadeck 关于如何在 for 循环中动态创建变量的答案,来自 如何在循环中创建不同的变量名称?:
for x in range(0, 9):
globals()['string%s' % x] = 'Hello'
print(string3)
# Output: 'Hello'
因为我也想将变量添加到列表中,所以我尝试了:
lst = []
for x in range(0, 9):
lst.append(globals()['string%s' % x] = 'Hello')
print(lst)
# Output: SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
# DESIRED OUTPUT: [string0, string1, string2, string3, string4, string5, string6, string7, string8]
我理解错误消息的内容,但我不知道如何绕过它并获得所需的输出。
谢谢!
globals()
返回一个字典,其中包含当前命名空间(docs)中定义的所有变量。
为了更好地理解,可以修改代码如下:
for x in range(0, 9):
namespace_variables_dict = globals()
variable_name = 'string%s' % x
namespace_variables_dict[variable_name] = 'Hello'
print(string3)
并将新变量名称添加到列表中:
lst = []
for x in range(0, 9):
namespace_variables_dict = globals()
variable_name = 'string%s' % x
namespace_variables_dict[variable_name] = 'Hello'
lst.append(variable_name)
print(lst) # ['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8']