Unterschied zwischen list () und [] in Python

Nachtrag

Postskriptum 2019/12/11: In dem Kommentar haben Sie auf einen Fehler bei der Zeitmessung hingewiesen. Wir validieren derzeit mit dem richtigen Code.

TL;DR --[]Notation ist in der Ausführungszeit vorteilhafter

Motivation

Python hat die Philosophie "Es sollte einen - und vorzugsweise nur einen - offensichtlichen Weg geben, dies zu tun.", Aber es gibt zwei Wege, eine Liste zu schreiben, die eine der am häufigsten verwendeten Datenstrukturen ist. Ist es gegen diese Philosophie? Gibt es einen Unterschied, der unterschiedliche Definitionen zulässt? Ich war besorgt.

Ich habe es nachgeschlagen

StackOverflow hatte 2015 eine ähnliche Frage.

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

Nun, list () ist eine Funktion und [] ist ein Literal. Nun, ich weiß nicht.

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).

In der Tat ist das Verhalten für Taples anders. Zeigt dieser Unterschied im Verhalten, dass es sich um ein Literal mit der obigen Funktion handelt?

Quora stellte 2016 auch eine ähnliche Frage.

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.

Übrigens gibt es auch im Wörterbuchtyp zwei Möglichkeiten, ihn mit "dict ()" und "{}" zu definieren. Ist die wörtliche Notation eher pythonisch (wie Python)? Ich verstehe Python immer noch überhaupt nicht.

Überprüfung

Ich habe festgestellt, dass sich einige von ihnen unterschiedlich verhalten, aber welches sollte in Situationen verwendet werden, in denen sie sich gleich verhalten? Da es beim Aufruf einen Unterschied zwischen der Funktion und dem Literal gibt, habe ich versucht, ihn mit dem Code zu überprüfen, der das Objekt jeweils 100 Mal erstellt.

Ausführungsumgebung

Vergleich der Ausführungszeit

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]")

~~ Ich sehe, es gibt einen signifikanten Unterschied in der Ausführungszeit! Die Bedeutung der Ausführungszeit im Literal "[]" wurde übrigens auch erkannt, als die Anzahl der Schleifen auf 1000 und 10000 eingestellt wurde. ~~

Umgang mit Tapples

Wie oben erwähnt, verhält sich jeder, wenn Sie zum Zeitpunkt der Generierung einen Taple als Argument nehmen, anders. Was passiert nach dem Erstellen des Objekts?

python


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

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

Sobald es als Listenobjekt erstellt wurde, scheint es keinen Unterschied im Verhalten zu geben. Ich denke, dieser Bereich ist Python oder objektorientiert ... Ich verstehe objektorientiert nicht.

Listeneinschlussnotation

F. Kann es gemacht werden? Kann nicht? A. Jede Notation kann ausgeführt werden.

Recommended Posts

Unterschied zwischen list () und [] in Python
Unterschied zwischen Anhängen und + = in der Python-Liste
Unterschied zwischen == und ist in Python
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Unterschied zwischen @classmethod und @staticmethod in Python
Unterschied zwischen nicht lokal und global in Python
[Python Iroha] Unterschied zwischen Liste und Tupel
Listenverkettungsmethode in Python, Unterschied zwischen list.extend () und dem Operator "+"
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
Über den Unterschied zwischen "==" und "is" in Python
Unterschied zwischen Ruby und Python Split
Unterschied zwischen Java und Python (Memo)
Unterschied zwischen Ruby und Python in Bezug auf Variablen
Unterschied zwischen der Python2-Serie und der Python3-Serie dict.keys ()
Unterschied zwischen return, return None und no return description in Python
[Python] Unterschied zwischen Funktion und Methode
Python - Unterschied zwischen exec und eval
[Python] Unterschied zwischen randrange () und randint ()
[Python] Unterschied zwischen sortiert und sortiert (Colaboratory)
Python-Modul num2words Verhaltensunterschied zwischen Englisch und Russisch
Unterschied in der Authentizität zwischen Python und JavaScript
Unterschiede zwischen Ruby und Python im Umfang
Unterschiede zwischen Python- und Java-Syntax
Unterschiede in der Beziehung zwischen PHP und Python schließlich und beenden
[Python] Unterschied zwischen Klassenmethode und statischer Methode
[Python] Unterschied zwischen Rand- und Randn-Ausgabe
Unterschiede in der Multithread-Verarbeitung zwischen Python und Jython
Unterschied zwischen numpy.ndarray und list (Dimension, Größe)
Sortierte Liste in Python
Filterliste in Python
Die findähnliche Sache der Liste in Python
Funktion zum Öffnen einer Datei in Python3 (Unterschied zwischen open und codecs.open und Geschwindigkeitsvergleich)
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
Unterschied zwischen Prozess und Job
Unterschied zwischen "categoryical_crossentropy" und "sparse_categorical_crossentropy"
Finde Fehler in Python
Unterschied zwischen Regression und Klassifikation
Stapel und Warteschlange in Python
Python-Liste und Tapples und Kommas
Python-Listeneinschlussnotation und Generator
Unterschied zwischen np.array und np.arange
Unterschied zwischen MicroPython und CPython
Unittest und CI in Python
Abrufen von Listenelementen in Python
Unterschied zwischen ps a und ps -a
Unterschied zwischen Return und Print-Python
Implementierte List und Bool in Python und SQLite3 (persönliche Notiz)
[Python] Berechnung der Differenz von Datum und Zeit in Monaten und Jahren
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
Gegenseitige Konvertierung zwischen JSON und YAML / TOML in Python
Vergleiche "log and infininity" mit Gauche (0.9.4) und Python (3.5.1)
Unterschiede beim Schreiben von externem Quellcode zwischen Ruby und Python
Extrahieren Sie mehrere Listenduplikate in Python
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
[Python] Verwalten Sie Funktionen in einer Liste
Unterschied zwischen SQLAlchemy filter () und filter_by ()
Ausgabe 2017 Premium Friday List in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python