Как я могу определить функцию для создания переменной с именем especifi c на основе другой переменной? (Python 3) - PullRequest
0 голосов
/ 30 мая 2020

Пример:

x = 5

список (я хочу поместить значение x здесь, в имя этой переменной) = 1

PS: I знайте, что я не могу использовать круглые скобки в этом случае.

поэтому я мог бы сделать:

print (list5)

и вернуть 1

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Вы не можете.

Это не совсем так, но почти в каждом отдельном случае, когда задается этот вопрос, ответ будет либо «вы не можете делать то, что хотите», либо «что вы хотите» для этого нужно использовать список ".

Вы упомянули, что у вас есть переменная с именем list5. Так что, возможно, вам действительно нужен список списков или что-то в этом роде. Взгляните на учебник Python Структуры данных , чтобы увидеть, соответствует ли что-то там проблеме, которую вы пытаетесь решить.

Вот некоторые вещи, которые вы можете попробовать. Они используют вложенные представления, но вам не обязательно этого делать - вы можете просто ввести инициализатор, если хотите.

list_of_lists = [[i ** 2 for i in range(j + 1, j * 2)] for j in range(5)]

dict_of_lists = { 'list' + str(j): [i ** 2 for i in range(j + 1, j * 2)]
                  for j in range(5)
                }
0 голосов
/ 30 мая 2020

Технически это возможно сделать, изменив dict, возвращаемый locals():

x = 5
locals()[f"list{x}"] = 1
print(list5)  # prints 1

Это излишне сложно, и очень легко случайно перезаписать то, что вы не хотели . Вам почти всегда будет лучше создать свой собственный словарь или список:

x = 5
my_vars = {
    f"list{x}": 1
}
print(my_vars["list5"])  # prints 1
0 голосов
/ 30 мая 2020

Как правило, как описано в других комментариях, вы не должны динамически создавать переменные, поскольку этого не следует делать в целом по причинам, указанным в комментариях. Предполагая, что вы все равно хотите это сделать по какой-либо причине, вот код:

 exec “list” + str(x) + “ = 1”
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...