Как вы создаете различные имена переменных, находясь в цикле?
целей...
for x in range(0,9):
string'x' = "Hello"
Так что я в конечном итоге с string1, string2, string3... все равняется "Привет"
6 ответов:
конечно, вы можете; его называют словарь:
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'}
Я сказал это несколько язык в проверке, но на самом деле лучший способ связать одно значение с другим значением-это словарь. Вот для чего он был создан!
Это действительно плохая идея, но...
for x in range(0, 9): globals()['string%s' % x] = 'Hello'
и потом например:
print(string3)
даст вам:
Hello
однако это плохая практика. Вместо этого вы должны использовать словари или списки, как предлагают другие. Если, конечно, вы действительно не хотели знать, как это сделать, но не хотели его использовать.
просто бессмысленно создавать имена переменных переменных. Зачем?
- они не нужны: вы можете хранить все в списках, диктофонах и так далее
- их трудно создать: Вы должны использовать
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
Не делайте этого используйте словарь
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 () не является хорошей идеей