Как передать Кортеж в качестве аргумента в 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 ответов
добавить скобки:
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'>
скобки, используемые для определения кортежа, являются необязательными в операторах 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 + = ['x','y','z']