Python: quelle est la différence entre (1,2,3) et [1,2,3], et quand dois-je utiliser chacun?

voix
44

Dans de nombreux endroits, (1,2,3)et [1,2,3]peuvent être utilisés de façon interchangeable.

Quand dois-je utiliser l'un ou l'autre, et pourquoi?

Créé 05/08/2008 à 08:18
source utilisateur
Dans d'autres langues...                            


14 réponses

voix
31

De la FAQ Python :

Listes et tuples, tout semblable à bien des égards, sont généralement utilisés de manière fondamentalement différente. Tuples peuvent être considérés comme étant similaire aux dossiers Pascal ou C struct; ils sont de petites collections de données connexes qui peuvent être de différents types qui fonctionnent en tant que groupe. Par exemple, coordonner un cartésien est correctement représentée comme un tuple de deux ou trois chiffres.

Listes, d'autre part, sont plus comme des tableaux dans d'autres langues. Ils ont tendance à détenir un nombre variable d'objets qui ont tous le même type et qui sont exploités sur un par un.

En général, par convention, vous ne choisiriez pas une liste ou un tuple juste en fonction de son (im) mutabilité. Vous choisissez un tuple pour les petites collections de pièces de données complètement différentes dans lesquelles une classe entière serait trop lourd, et une liste des collections de toute taille raisonnable où vous avez un ensemble homogène de données.

Créé 05/08/2008 à 14:22
source utilisateur

voix
19

La liste [1,2,3] est dynamique et flexible, mais cette flexibilité a un coût de vitesse.

Le tuple (1,2,3) est fixe (immuable) et donc plus rapide.

Créé 05/08/2008 à 08:27
source utilisateur

voix
11

Tuples sont un moyen rapide \ flexible pour créer des composites données-types. Les listes sont des conteneurs pour, bien, listes d'objets.

Par exemple, vous pouvez utiliser une liste pour stocker une liste des détails des élèves dans une classe.

Chaque détail des élèves dans cette liste peut être un 3-tuple contenant leur numéro de rôle, le nom et le score de test.

`[(1,'Mark',86),(2,'John',34)...]`

Aussi, parce que tuples sont immuables, ils peuvent être utilisés comme clés dans les dictionnaires.

Créé 07/08/2008 à 12:21
source utilisateur

voix
7

La notion de tuples sont très expressifs:

  • De manière pragmatique, ils sont parfaits pour l' emballage et le déballage des valeurs ( x,y=coord).

  • En combinaison avec des dictionnaires (tables de hachage), ils permettent les formes de cartographie qui nécessiteraient de nombreux niveaux d'association. Par exemple, envisager de marquage (x, y) a été trouvé.

    // PHP
    if (!isset($found[$x])) {
        $found[$x] = Array();
        $found[$x][$y] = true;
    } else if (!isset($found[$x][$y])) {
        $found[$x][$y] = true;
    }
    
    # Python
    found[(x,y)] = True # parens added for clarity
    
  • Les listes doivent être utilisées avec l'attente des opérations sur son contenu (d'où les différentes mentions de immuabilité). On voudra pop, pousser, épissures, tranche, rechercher, insérer avant, insérer après, etc avec une liste.

  • Uplets doivent être une représentation de niveau bas d'un objet, où de simples comparaisons sont faites, ou des opérations telles que l'extraction de l'élément ou n ième éléments d'une manière prévisible, tels que l'exemple de coordonnées donnée précédemment.

  • Enfin, les listes ne sont pas indexables, de sorte que le type de cartographie fait avec des dictionnaires (tables de hachage en Perl, des tableaux associatifs en PHP) doivent être faites avec tuples.

    Voici un exemple simple de tuples et les dictionnaires, enfin réunis:

    """
    couple is a tuple of two people
    doesLike is a dictionary mapping couples to True or False
    """
    couple = "john", "jane"
    doesLike = dict()
    doesLike[couple] = True
    doesLike["jane", "john"] = False # unrequited love :'(
    
Créé 15/08/2008 à 19:00
source utilisateur

voix
4

[1, 2, 3]est une liste dans laquelle on peut ajouter ou supprimer des éléments.
(1, 2, 3)est un tuple dans lequel une fois défini, la modification ne peut pas être fait.

Créé 25/06/2011 à 12:14
source utilisateur

voix
3

Chaque fois que je dois passer dans une collection d'éléments à une fonction, si je veux la fonction de ne pas modifier les valeurs transmises dans - j'utiliser tuples.

Sinon, si je veux avoir la fonction de modifier les valeurs, j'utilise la liste.

Toujours si vous utilisez des bibliothèques externes et ont besoin de passer dans une liste de valeurs à une fonction et ne savent pas sur l'intégrité des données, utilisez un tuple.

Créé 15/08/2008 à 17:38
source utilisateur

voix
2
  • Un tuple peut représenter une clé dans le dictionnaire, car il est immuable.
  • Utilisez des listes si vous avez une collection de données qui n'a pas besoin d'un accès aléatoire.
Créé 20/05/2017 à 07:30
source utilisateur

voix
2

ouvrir un python de la console et exécuter. Essaye ça:

  >>> list = [1, 2, 3]     
  >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli
    ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
    em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
     '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r
    educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__'
    , '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 
'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Comme vous pouvez le voir le dernier sur la dernière liste des lignes les méthodes suivantes: sort « append », « count », « étendre », « index », « insert », « pop », « enlever », « inverse », » '

Maintenant, essayez la même chose pour tuple:

>>> tuple = (1, 2, 3)
>>> dir(tuple)
    ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
    format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
    slice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__
    lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__'
    , '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

Seulement « nombre » et « index » des méthodes de liste apparaît ici.

En effet, tuples sont immuables et ils ne prennent pas en charge aucune modification. Au contraire, ils sont plus simples et plus rapides dans la mise en œuvre interne.

Créé 10/10/2015 à 19:30
source utilisateur

voix
2

Comme d'autres l'ont mentionné, listes et tuples sont les deux conteneurs qui peuvent être utilisés pour stocker des objets python. Les listes sont extensibles et leur contenu peuvent changer par la cession, sur les autres tuples de main sont immuables.

En outre, les listes ne peuvent pas être utilisées comme clés dans un dictionnaire alors tuples peut.

Créé 08/08/2008 à 07:06
source utilisateur

voix
1

(1,2,3) et [1,2,3] peuvent être utilisés de manière interchangeable dans des conditions rares.

Donc, (1,2,3) est un tuple et est immuable. Tout changement que vous souhaitez faire doivent remplacer l'objet.

[1,2,3] est une liste d'éléments et peut être joint en annexe et enlevé.

Liste a plus de fonctionnalités qu'un tuple.

Créé 31/03/2018 à 09:14
source utilisateur

voix
1

[1,2,3] est une liste.

(1,2,3) est un tuple et immuable.

Créé 08/10/2014 à 07:02
source utilisateur

voix
1

Si vous pouvez trouver une solution qui fonctionne avec tuples, les utiliser, car il force immuabilité quel type de disques que vous sur un chemin plus fonctionnel. Vous regrettez presque jamais aller sur le chemin fonctionnel / immuable.

Créé 08/08/2008 à 07:48
source utilisateur

voix
0

(1,2,3)est un tuple et [1,2,3]une liste. Vous ou l' autre des deux représentent des séquences de nombres , mais notez que tuples sont immuables et la liste sont des objets Python mutables.

Créé 27/06/2016 à 20:48
source utilisateur

voix
0

(1,2,3)est un moment de tuple [1,2,3]est une liste. Un tuple est un objet immuable alors qu'une liste est mutable.

Créé 19/02/2016 à 02:15
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more