Supposons que je veuille une liste de n-uplets. Voici ma première idée:
li = []
li.append(3, 'three')
Ce qui résulte en:
Traceback (most recent call last):
File "./foo.py", line 12, in <module>
li.append('three', 3)
TypeError: append() takes exactly one argument (2 given)
Je recourt donc à:
li = []
item = 3, 'three'
li.append(item)
ce qui fonctionne, mais semble trop verbeux. Y a-t-il un meilleur moyen?
Ajoutez plus de parenthèses:
li.append((3, 'three'))
Les parenthèses avec une virgule créent un tuple, à moins qu'il ne s'agisse d'une liste d'arguments.
Cela signifie:
() # 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
Un effet similaire se produit avec un tuple de longueur 0:
type() # <- missing argument
type(()) # returns <type 'Tuple'>
C'est parce que c'est pas un tuple, ce sont deux arguments de la méthode add
. Si vous voulez lui donner l'argument one qui est un tuple, l'argument lui-même doit être (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')]
>>>
Les parenthèses utilisées pour définir un tuple sont facultatives dans les instructions de retour et d’affectation. c'est à dire:
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()
dans l'appel de fonction, vous devez définir explicitement le tuple:
def baz(myTuple):
first, second = myTuple
return first
baz((3, 1))
il renvoie cette erreur car list.append ne prend qu'un seul argument
essayez ceci liste + = ['x', 'y', 'z']