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






Распаковать кортеж в список?
l = list(t)
PEZ, я делаю сценарий для обработки множества графиков с использованием функции numpy 'loadtxt ". Количество столбцов данных известно только во время выполнения, поэтому я не могу создавать имена переменных.
Да, но если у вас есть данные в кортеже, вы можете работать с ними, как со списком. t [1] даст вам те же данные, что и l [1], без «распаковать». Конечно, если вы изменяете данные «на месте», вам понадобится список.
@PEZ - поймите, я натыкаюсь, но это может быть полезно, например для распаковки аргументов или сложного парсинга. например: (opt1, opt2,) = tuple (argument.split ('-') [2:]) - этот код на самом деле не будет работать, потому что opt1 и 2 не являются необязательными, но должны существовать. Не лучший вариант использования в мире, но мой поиск в Google по этой теме привел меня сюда.
Вы имеете в виду, что хотите создавать переменные на лету? Как ваша программа узнает, как ссылаться на них, если они создаются динамически?
Кортежи имеют длину, как и списки. Совершенно допустимо делать что-то вроде:
total_columns = len(the_tuple)
Вы также можете преобразовать кортеж в список, хотя это бесполезно, если вы не хотите начать изменять результаты. (Кортежи нельзя изменить; списки можно.) Но, в любом случае, преобразование кортежа в список тривиально:
my_list = list(the_tuple)
Существуют способы находятся для создания переменных на лету (например, с eval), но опять же, как бы вы узнали, как на них ссылаться?
Я думаю, вам следует уточнить, что именно вы здесь пытаетесь сделать.
Вы можете использовать звездочку для распаковки файлов переменной длины. Например:
foo, bar, *other = funct()
Это должно поместить первый элемент в foo, второй - в bar, а все остальные - в other.
Обновлять: Я забыл упомянуть, что это совместимо только с Python 3.0.
Но мне любопытно, почему вы хотите это сделать. знак равно