Python: распаковать на неизвестное количество переменных? - PullRequest
9 голосов
/ 11 января 2009

Как я могу распаковать кортеж неизвестного, скажем, в список?

У меня есть несколько столбцов данных, и некоторые функции разделяют их на кортежи. Я хочу распаковать этот кортеж в переменные, но я не знаю, сколько у меня будет столбцов. Есть ли способ динамически распаковать его на столько переменных, сколько мне нужно?

Спасибо за вашу помощь:)

Ответы [ 3 ]

17 голосов
/ 11 января 2009

Вы можете использовать звездочку для распаковки переменной длины. Например:

foo, bar, *other = funct()

Это должно поместить первый элемент в foo, второй в bar, а все остальные в other.

Обновление: Я забыл упомянуть, что это только Python 3.0 совместимый.

7 голосов
/ 11 января 2009

Распаковать кортеж в список?

l = list(t)
3 голосов
/ 11 января 2009

Вы хотите создать переменные на лету? Как ваша программа узнает, как на них ссылаться, если они создаются динамически?

Кортежи имеют длину, как и списки. Совершенно допустимо делать что-то вроде:

total_columns = len(the_tuple)

Вы также можете преобразовать кортеж в список, хотя это не принесет пользы, если вы не захотите начать изменять результаты. (Кортежи не могут быть изменены; списки могут.) Но, в любом случае, преобразование кортежа в список тривиально:

my_list = list(the_tuple)

Существует способов создания переменных на лету (например, с eval), но, опять же, как вы узнаете, как обращаться к ним?

Я думаю, вы должны уточнить, что именно вы пытаетесь сделать здесь.

...