例如,为了演示目的...
for x in range(0,9):
string'x' = "Hello"
于是我最终得到string1、string2、string3...都等于"Hello"的字符串
d = {}
for x in range(1, 10):
d["string{0}".format(x)] = "Hello"
>>> d["string5"]
'Hello'
>>> d
{'string1': 'Hello',
'string2': 'Hello',
'string3': 'Hello',
'string4': 'Hello',
'string5': 'Hello',
'string6': 'Hello',
'string7': 'Hello',
'string8': 'Hello',
'string9': 'Hello'}
我有点玩笑地说了这句话,但真正将一个值与另一个值关联的最佳方法就是使用字典。那是字典的设计初衷!
这是一个真的不好的主意,但是...
for x in range(0, 9):
globals()['string%s' % x] = 'Hello'
然后举个例子:
print(string3)
将会给你:
Hello
然而这是不好的实践。 正如其他人所建议的那样,您应该使用字典或列表。除非当然你真的想知道如何做到这一点,但不想使用它。
globals()
而不是一些简单的 dict
。 - Tadeckprint(string%s)
? - Shōgun8你可以使用exec()
来实现这一点。例如:
for k in range(5):
exec(f'cat_{k} = k*2')
>>> print(cat_0)
0
>>> print(cat_1)
2
>>> print(cat_2)
4
>>> print(cat_3)
6
>>> print(cat_4)
8
在这里,我利用了Python 3.6+中方便的f字符串格式化功能。
exec
会涉及黑魔法、攻击漏洞和危险行为,但它确实回答了所问的问题。 - psaxton创建变量变量名是没有意义的,为什么呢?
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
for x in range(9):
exec("string" + str(x) + " = 'hello'")
这应该能够正常工作。
不要这样做,使用字典。
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
不要这样做,使用字典。
globals()存在风险,因为它给出当前命名空间指向的内容,但是这可能会更改,所以修改从globals()返回的内容不是一个好主意。
我会使用列表:
string = []
for i in range(0, 9):
string.append("Hello")
string[x]
这里的x
将确定你希望选择哪个“Hello”。
因此,print(string[1])
会打印出Hello
。
string.append("Hello")
。 - Greg Hewgill使用字典是保持变量和相关值的正确方式,您可以使用以下方法:
dict_ = {}
for i in range(9):
dict_['string%s' % i] = 'Hello'
但是如果您想要将变量添加到本地变量中,您可以使用:
for i in range(9):
exec('string%s = Hello' % i)
例如,如果你想给它们分配0到8的值,可以使用以下代码:
for i in range(9):
exec('string%s = %s' % (i,i))
import requests
import sys
def switch_name(branchNum):
# s is an empty list to start with
s = []
#this FOR loop is purely for creating and storing the dynamic variable names in s
for x in range(1,8,+1):
s.append("BR" + str(branchNum) + "SW0" + str(x))
#this FOR loop is used to read each of the switch in list s and perform operations on
for i in s:
print(i,"\n")
# other operations can be executed here too for each switch (i) - like SSH in using paramiko and changing switch interface VLAN etc.
def main():
# for example's sake - hard coding the site code
branchNum= "123"
switch_name(branchNum)
if __name__ == '__main__':
main()
输出结果为:
BR123SW01
BR123SW02
BR123SW03
BR123SW04
BR123SW05
BR123SW06
BR123SW07
最初的回答
x = ["Hello" * 9]
,然后通过x[0]、x[1] ...
访问它。如果您想以不同的方式使用它,我认为您需要提供更多的代码背景信息。 - James KhourySyntaxError: Use a data structure。;-)
- Jochen Ritzelx
是一个包含单个元素的列表,即字符串 "HelloHelloHelloHelloHelloHelloHelloHelloHello"。我想你的意思是x = ["Hello"] * 9
。 - user539810