Я хочу создать переменные как a1, a2, a3 ... a10.
Для этого я использовал цикл for. Поскольку переменная в цикле увеличивается, мне нужно создать переменную, как указано выше.
Кто-нибудь может дать мне идею?
Во время создания мне также нужно иметь возможность присваивать им значения.
Вот где я получаю синтаксическую ошибку.
Размещение кода, вызывающего ошибку SyntaxError, было бы хорошей идеей.






Обычно мы используем список, а не набор отдельных переменных.
a = 10*[0]
a[0], a[1], a[2], a[9]
Вы можете использовать функцию exec:
for i in range(0,10):
exec("a%d=%d" % (i,i))
Не очень питонический способ делать что-то.
(Я не голосовал против) Это правильно, но не очень полезно для программиста Python, который хочет подражать. Вопросы намекают на необходимость руководства.
exec не является функцией (в 2.x); круглые скобки не нужны.
@Martin v. Löwis: их установка работает в 2.5.2 ... В любом случае код решает вопрос, но я согласен с ΩΤΖΙΟΥ, также должна быть подсказка "питонизм";)
Следуя тому, что сказал С.Лотт, вы также можете использовать dict, если вам действительно нужны уникальные имена и порядок элементов не важен:
data = {}
for i in range(0, 10):
data['a%d' % i] = i
>>>data
{'a1': 1, 'a0': 0, 'a3': 3, 'a2': 2, 'a5': 5, 'a4': 4, 'a7': 7, 'a6': 6, 'a9': 9, 'a8': 8}
Я бы добавил, что очень опасно автоматизировать создание переменных, как вы хотите, поскольку вы можете перезаписать переменные, которые уже могли существовать.
globals() возвращает глобальный словарь переменных:
for i in range(1,6):
globals()["a%i" % i] = i
print a1, a2, a3, a4, a5 # -> 1 2 3 4 5
Но честно говоря: я бы никогда этого не сделал, автоматическое загрязнение пространства имен вредно. Я лучше воспользуюсь списком или диктовкой.
Почему бы вам не использовать для этого массив?