Différence entre list () et [] en Python

Postscript

PostScript du 11/12/2019: Dans le commentaire, vous avez signalé une erreur de mesure du temps. Nous revalidons actuellement avec le bon code.

TL;DR --[]la notation est plus avantageuse en temps d'exécution

Motivation

Python a la philosophie «Il devrait y avoir une - et de préférence une seule - façon évidente de le faire.», Mais il y a deux façons d'écrire une liste, qui est l'une des structures de données les plus fréquemment utilisées. Est-ce contre cette philosophie? Y a-t-il une différence qui permet des définitions différentes? J'étais inquiet.

Je l'ai cherché

StackOverflow avait une question similaire en 2015.

One's a function call, and one's a literal:

Eh bien, list () est une fonction et [] est un littéral. Eh bien, je ne sais pas.

For the sake of completion, another thing to note is that list((a,b,c)) will return [a,b,c], whereas [(a,b,c)] will not unpack the tuple. This can be useful when you want to convert a tuple to a list. The reverse works too, tuple([a,b,c]) returns (a,b,c).

En effet, le comportement des taples est différent. Cette différence de comportement montre-t-elle qu'il s'agit d'un littéral avec la fonction ci-dessus?

Quora a également posé une question similaire en 2016.

The end result is the same whether you use [ ] or list() and same for { } vs. dict(). There is a difference in performance, though. [ ] and { } are more performant than the alternatives, list() and dict(), mainly because using list() and dict() involves the overhead of symbol lookup and function invocation.

In my opinion, using [ ] and { } is more pythonic. In addition, this notation allows you to take advantage of list/dictionary comprehension.

Au fait, même dans le type dictionnaire, il y a deux façons de le définir avec dict () et {}. La notation littérale est-elle plus pythonique (comme Python)? Je ne comprends toujours pas du tout Python.

Vérification

J'ai trouvé que certains d'entre eux se comportent différemment, mais lequel devrait être utilisé dans des situations où ils se comportent de la même manière? Puisqu'il y a une différence dans l'appel entre la fonction et le littéral, j'ai essayé de le vérifier avec le code qui crée l'objet 100 fois chacun.

Environnement d'exécution

Comparaison du temps d'exécution

list.py


#-*- using:utf-8 -*-
import time

if __name__ == '__main__':
    start = time.time()
    
    for i in range(0,100):
        exec("list_%d = %s" % (i, []))
    elapsed_time1 = time.time() - start
    print ("elapsed_time:{0}".format(elapsed_time1) + "[sec]")

    start = time.time()

    for j in range(100,200):
        exec("list_%d = %s" % (j, list()))
    elapsed_time2 = time.time() - start
    print ("elapsed_time:{0}".format(elapsed_time2) + "[sec]")

~~ Je vois, il y a une différence significative dans le temps d'exécution! À propos, la signification du temps d'exécution dans le littéral [] était également reconnue lorsque le nombre de boucles était défini sur 1000 et 10000. ~~

Manipulation des tapples

Comme mentionné ci-dessus, si vous prenez un taple comme argument au moment de la génération, chacun se comportera différemment, Que se passe-t-il après la création de l'objet?

python


>>> l1 = []
>>> l1.append((1,2,3))
>>> print(l1)
[(1, 2, 3)]

>>> l2 = list()
>>> l2.append((1,2,3))
>>> print(l2)
[(1, 2, 3)]

Il ne semble y avoir aucune différence de comportement une fois qu'il est créé comme objet de liste. Je pense que ce domaine est Python ou orienté objet ... Je ne comprends pas orienté objet.

Notation d'inclusion de liste

Q. Cela peut-il être fait? Ne peux pas? A. L'une ou l'autre notation peut être exécutée.

Recommended Posts

Différence entre list () et [] en Python
Différence entre append et + = dans la liste Python
Différence entre == et est en python
différence entre les instructions (instructions) et les expressions (expressions) en Python
Différence entre @classmethod et @staticmethod en Python
Différence entre non local et global en Python
[Python Iroha] Différence entre List et Tuple
Méthode de concaténation de liste en python, différence entre list.extend () et opérateur «+»
[python] Différence entre variable et self. Variable dans la classe
À propos de la différence entre "==" et "is" en python
Différence entre Ruby et Python Split
Différence entre java et python (mémo)
Différence entre Ruby et Python en termes de variables
Différence entre la série python2 et la série python3 dict.keys ()
Différence entre return, return None et no return description en Python
[Python] Différence entre fonction et méthode
Python - Différence entre exec et eval
[Python] Différence entre randrange () et randint ()
[Python] Différence entre trié et trié (Colaboratoire)
Module Python num2words Différence de comportement entre l'anglais et le russe
Différence d'authenticité entre Python et JavaScript
Différences entre Ruby et Python dans la portée
Différences entre la syntaxe Python et Java
Différences dans la relation entre PHP et Python enfin et quitter
[Python] Différence entre la méthode de classe et la méthode statique
[python] Différence entre la sortie rand et randn
Différences de multithreading entre Python et Jython
Différence entre numpy.ndarray et list (dimension, taille)
Liste triée en Python
Liste de filtres en Python
La chose semblable à une recherche de liste en Python
Fonction pour ouvrir un fichier en Python3 (différence entre open et codecs.open et comparaison de vitesse)
[Introduction à Python] Quelle est la différence entre une liste et un taple?
Différence entre processus et travail
Différence entre "categorical_crossentropy" et "sparse_categorical_crossentropy"
Trouver des erreurs en Python
Différence entre régression et classification
Pile et file d'attente en Python
Liste Python et tapples et virgules
Notation et générateur d'inclusion de liste Python
Différence entre np.array et np.arange
Différence entre MicroPython et CPython
Unittest et CI en Python
Obtenir des éléments de liste en Python
Différence entre ps a et ps -a
Différence entre return et print-Python
Implémentation de List et Bool en Python et SQLite3 (note personnelle)
[python] Calcul des mois et des années de différence de date / heure
[Python] Comment trier un dict dans une liste et une instance dans une liste
Conversion mutuelle entre JSON et YAML / TOML en Python
Comparez la "relation log et infini" avec Gauche (0.9.4) et Python (3.5.1)
Différences dans la façon d'écrire du code source externe entre Ruby et Python
Extraire plusieurs doublons de liste en Python
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
[python] Gérer les fonctions dans une liste
Différence entre SQLAlchemy filter () et filter_by ()
Sortie de la liste du vendredi Premium 2017 en Python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python