Как передать tuple в качестве аргумента в Python?

Предположим, мне нужен список кортежей. Вот моя первая идея:

li = [] li.append(3, 'three') 

Результат:

 Traceback (most recent call last): File "./foo.py", line 12, in <module> li.append('three', 3) TypeError: append() takes exactly one argument (2 given) 

Поэтому я прибегаю к:

 li = [] item = 3, 'three' li.append(item) 

который работает, но выглядит слишком многословным. Есть ли способ лучше?

4 Solutions collect form web for “Как передать tuple в качестве аргумента в Python?”

Добавить круглые скобки:

 li.append((3, 'three')) 

Скобки с запятой создают кортеж, если только это не список аргументов.

Это значит:

 () # this is a 0-length tuple (1,) # this is a tuple containing "1" 1, # this is a tuple containing "1" (1) # this is number one - it's exactly the same as: 1 # also number one (1,2) # tuple with 2 elements 1,2 # tuple with 2 elements 

Аналогичный эффект происходит с кортежем 0 длины:

 type() # <- missing argument type(()) # returns <type 'tuple'> 

Это потому, что это не кортеж, это два аргумента метода add . Если вы хотите дать ему один аргумент, который является кортежем, сам аргумент должен быть (3, 'three') :

 Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> li = [] >>> li.append(3, 'three') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: append() takes exactly one argument (2 given) >>> li.append( (3,'three') ) >>> li [(3, 'three')] >>> 

Скобки, используемые для определения кортежа, являются необязательными в операторах return и assignement. то есть:

 foo = 3, 1 # equivalent to foo = (3, 1) def bar(): return 3, 1 # equivalent to def bar(): return (3, 1) first, second = bar() # equivalent to (first, second) = bar() 

в вызове функции вы должны явно определить кортеж:

 def baz(myTuple): first, second = myTuple return first baz((3, 1)) 

он выдает эту ошибку, потому что list.append принимает только один аргумент

попробуйте этот список + = ['x', 'y', 'z']

  • Поиск решения для сравнения pythonic list
  • Как добавить значение None в список в Python?
  • Создание списка равномерно расположенных номеров в определенном диапазоне в python
  • Вычисление и возврат средних значений в список
  • Как найти максимальное число в списке 2d python
  • Как назначить из одного списка другому?
  • Как разбить список и передать их как отдельный параметр?
  • Python List Slicing с None как аргумент
  •  
    Interesting Posts for Van-Lav

    Python находит повторяющуюся последовательность в списке целых чисел?

    SciPy 0.12.0 и Numpy 1.6.1 – numpy.core.multiarray не удалось импортировать

    mlpy, numpy, scipy в Google App Engine

    Как вернуть индекс нескольких элементов, существующих в списке в Python?

    Scapy windows – sniff () – 'log_runtime' не определен

    Проблема с tkinter, python и seaborn: _tkinter.TclError: нет отображаемого имени и нет переменной окружения $ DISPLAY

    Выполнение скрипта Python из оболочки Django

    Смешивание языков – Python и Objective-C

    Как я могу проверить синтаксис кода Python в Emacs без его выполнения?

    Использование модуля протокола python для инфо-сообщений в один файл и ошибки в другом файле

    Быстрый ролл

    Что означает «i» в расширении Python .pyi?

    Форматирование строк в Python: могу ли я использовать% s для всех типов?

    Самый быстрый алгоритм для нахождения перекрытия между двумя очень большими списками?

    заменить элемент на элемент различными массивами

    Python - лучший язык программирования в мире.