Python: распаковать на неизвестное количество переменных?
-
08-07-2019 - |
Вопрос
Как я могу распаковать кортеж неизвестного, скажем, в список?
У меня есть несколько столбцов данных, и некоторые функции разделяют их на кортежи. Я хочу распаковать этот кортеж в переменные, но я не знаю, сколько у меня будет столбцов. Есть ли способ динамически распаковать его в столько переменных, сколько мне нужно?
Спасибо за вашу помощь:)
Решение
Распаковать кортеж в список?
l = list(t)
Другие советы
Вы можете использовать звездочку для распаковки переменной длины. Например:
foo, bar, *other = funct()
Это должно поместить первый элемент в foo
, второй - в bar
, а все остальные - в other
.
Обновление: я забыл упомянуть, что это только Python 3.0-совместимый.
Вы хотите создать переменные на лету? Как ваша программа узнает, как на них ссылаться, если они создаются динамически?
Кортежи имеют длину, как и списки. Совершенно допустимо делать что-то вроде:
total_columns = len(the_tuple)
Вы также можете преобразовать кортеж в список, хотя это не принесет пользы, если вы не захотите начать изменять результаты. (Кортежи не могут быть изменены; списки могут.) Но, в любом случае, преобразование кортежа в список тривиально:
my_list = list(the_tuple)
Есть способы создавать переменные на лету (например, с помощью eval
), но опять же, как вы узнаете, как на них ссылаться?
Я думаю, вы должны уточнить, что именно вы пытаетесь сделать здесь.