web-dev-qa-db-fra.com

Ajouter un tuple à une liste - quelle est la différence entre deux façons?

J'ai écrit mon premier "Hello World" il y a 4 mois. Depuis lors, je suis un cours Coursera Python dispensé par l’Université Rice. J’ai récemment travaillé sur un mini-projet comprenant des tuples et des listes. Il est étrange d’ajouter un Tuple à une liste moi:

a_list = []
a_list.append((1, 2))       # Succeed! Tuple (1, 2) is appended to a_list
a_list.append(Tuple(3, 4))  # Error message: ValueError: expecting Array or iterable

C'est assez déroutant pour moi. Pourquoi spécifier le tuple à ajouter en utilisant "Tuple (...)" au lieu de simple "(...)" provoquera un ValueError?

BTW: J'ai utilisé CodeSkulptoroutil de codage utilisé dans le cours

33
Skywalker326

La fonction Tuple ne prend qu'un seul argument qui doit être un itératif

Tuple([iterable])

Renvoie un tuple dont les éléments sont identiques et dans le même ordre que les éléments iterable.

Essayez de faire 3,4 un itérable en utilisant [3,4] (une liste) ou (3,4) (un tuple)

Par exemple

a_list.append(Tuple((3, 4)))

marchera

47
Bhargav Rao

Parce que Tuple(3, 4) n'est pas la syntaxe correcte pour créer un tuple. La syntaxe correcte est -

Tuple([3, 4])

ou

(3, 4)

Vous pouvez le voir à partir d'ici - https://docs.python.org/2/library/functions.html#Tuple

10
brainless coder

Il devrait y avoir aucune différence, mais votre méthode Tuple est fausse, essayez:

a_list.append(Tuple([3, 4]))
1
101

Cela n'a rien à voir avec append. Tuple(3, 4) tout seul soulève cette erreur.

La raison en est que, comme le message d'erreur le dit, Tuple attend un argument itérable. Vous pouvez créer un tuple de l'objet conten d'un objet nique en transmettant cet objet unique à Tuple. Vous ne pouvez pas créer un tuple de deux choses en les passant comme arguments séparés.

Il suffit de faire (3, 4) pour faire un tuple, comme dans votre premier exemple. Il n'y a aucune raison de ne pas utiliser cette syntaxe simple pour écrire un tuple.

1
BrenBarn

Je crois que Tuple() prend une liste comme argument. Par exemple,

Tuple([1,2,3]) # returns (1,2,3)

voyez ce qui se passe si vous enroulez votre tableau avec des crochets

1
Ashwin Reddy