Tak*_*kun 105 python variables loops
例如......
for x in range(0,9):
string'x' = "Hello"
Run Code Online (Sandbox Code Playgroud)
所以我最终得到了string1,string2,string3 ......等于"你好"
the*_*olf 137
你当然可以; 它被称为字典:
d={}
for x in range(1,10):
d["string{0}".format(x)]="Hello"
In [7]: d["string5"]
Out[7]: 'Hello'
In [8]: d
Out[8]:
{'string1': 'Hello',
'string2': 'Hello',
'string3': 'Hello',
'string4': 'Hello',
'string5': 'Hello',
'string6': 'Hello',
'string7': 'Hello',
'string8': 'Hello',
'string9': 'Hello'}
Run Code Online (Sandbox Code Playgroud)
我说这个有点舌头,但实际上将一个值与另一个值相关联的最佳方法是字典.这就是它的设计目标!
Tad*_*eck 51
这真是个坏主意,但......
for x in range(0, 9):
globals()['string%s' % x] = 'Hello'
Run Code Online (Sandbox Code Playgroud)
然后例如:
print(string3)
Run Code Online (Sandbox Code Playgroud)
会给你:
Hello
Run Code Online (Sandbox Code Playgroud)
然而,这是不好的做法.您应该像其他人提议的那样使用词典或列表.当然,除非你真的想知道怎么做,但不想使用它.
Joc*_*zel 15
创建变量变量名称毫无意义.为什么?
exec
或globals()
exec/globals()
再次使用使用列表更容易:
# 8 strings: `Hello String 0, .. ,Hello String 8`
strings = ["Hello String %d" % x for x in range(9)]
for string in strings: # you can loop over them
print string
print string[6] # or pick any of them
Run Code Online (Sandbox Code Playgroud)
小智 12
一种方法是使用exec()
。例如:
for k in range(5):
exec(f'cat_{k} = k*2')
Run Code Online (Sandbox Code Playgroud)
打印(cat_0)
0
打印(cat_1)
2
打印(cat_2)
4
打印(cat_3)
6
打印(cat_4)
8
在这里,我利用了Python 3.6+中方便的f字符串格式
小智 12
for x in range(9):
exec("string" + str(x) + " = 'hello'")
Run Code Online (Sandbox Code Playgroud)
这应该有效。
小智 9
不要这样做使用字典
import sys
this = sys.modules[__name__] # this is now your current namespace
for x in range(0,9):
setattr(this, 'string%s' % x, 'Hello')
print string0
print string1
print string2
print string3
print string4
print string5
print string6
print string7
print string8
Run Code Online (Sandbox Code Playgroud)
不要这样做使用字典
globals()有风险,因为它为你提供了命名空间当前指向的内容,但这可能会改变,因此修改globals()的返回值不是一个好主意
我会使用一个列表:
string = []
for i in range(0, 9):
string.append("Hello")
Run Code Online (Sandbox Code Playgroud)
这样,你就会有 9 个“Hello”,你可以像这样单独得到它们:
string[x]
Run Code Online (Sandbox Code Playgroud)
在哪里x
可以识别您想要哪个“Hello”。
所以,print(string[1])
会打印Hello
.