Python: распаковать до неизвестного количества переменных?

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

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
13
0
12 451
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

l = list(t)

Но мне любопытно, почему вы хотите это сделать. знак равно

PEZ 11.01.2009 02:28

PEZ, я делаю сценарий для обработки множества графиков с использованием функции numpy 'loadtxt ". Количество столбцов данных известно только во время выполнения, поэтому я не могу создавать имена переменных.

Nope 11.01.2009 06:56

Да, но если у вас есть данные в кортеже, вы можете работать с ними, как со списком. t [1] даст вам те же данные, что и l [1], без «распаковать». Конечно, если вы изменяете данные «на месте», вам понадобится список.

PEZ 11.01.2009 13:46

@PEZ - поймите, я натыкаюсь, но это может быть полезно, например для распаковки аргументов или сложного парсинга. например: (opt1, opt2,) = tuple (argument.split ('-') [2:]) - этот код на самом деле не будет работать, потому что opt1 и 2 не являются необязательными, но должны существовать. Не лучший вариант использования в мире, но мой поиск в Google по этой теме привел меня сюда.

smaudet 04.05.2018 08:42

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

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

total_columns = len(the_tuple)

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

my_list = list(the_tuple)

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

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

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

foo, bar, *other = funct()

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

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

Другие вопросы по теме