Я бы посоветовал использовать список или словарь вместо имен динамических переменных. Все версии ниже приводят к lists[0]
, lists[1]
и т. Д. []
, который кажется достаточно близким к тому, что вы хотите, и будет более читабельным/поддерживаемым в долгосрочной перспективе. (Примечание: я использую lists
вместо list
в качестве имени переменной, потому что последний перезаписывает встроенную функцию list
, которую вы, вероятно, не хотите).
1) Версия с lists
является список списков (цифры только порядок списков):
lists = [[] for i in range(len(myself))]
2) То же, но с для цикла вместо списка понимания:
lists = []
for i in range(len(myself)):
lists.append([])
3) Версия с lists
будучи словарь списков с числами в качестве ключей (немного более гибким, если вы хотите удалить некоторые из значений позже или такие):
lists = {}
for i in range(len(myself)):
lists[i] = []
О динамических имен переменных, то есть переменные, такие как list1
вместо lists[1]
... Серьезно, вы, вероятно, не следует делать это. Это излишне сложно и сложно поддерживать. Подумайте об этом - в следующем месяце вы захотите изменить сценарий, и вы попытаетесь выяснить, где была определена переменная list1
, и вы не сможете сделать это с помощью обычного текстового поиска. Это боль.
Но если вы действительно хотите по какой-то причине, это возможно с exec
- here are some reasons not to use it - или с изменением locals()
- bad idea according to documentation. Также см. Комментарии для более подробного обсуждения того, почему эти вещи - плохая идея, и как запутывает это, даже говорит о них.
Не уверен, что я понимаю вашу цель. Не могли бы вы перефразировать свой вопрос или уточнить, что вы пытаетесь выполнить? – Levon
Да что именно вы подразумеваете под «списками с динамическими именами»? –
[c для c в «динамических именах»] ... извините ... не смог помочь – Gerrat