[PYTHON] Das Hinzufügen ist schneller als das Hinzufügen und Erweitern der Liste, oder?

Einfache Geschwindigkeitsmessung

Messen wir die Geschwindigkeit, wenn wir einer leeren Liste "sub_list = list (range (10000))" hinzufügen.

1. Geschwindigkeit verlängern

In:
%%timeit

li = []
li.extend(sub_list)
Out:
26.7 µs ± 2.44 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

2. Zugabegeschwindigkeit

In:
%%timeit

li = []
li += sub_list
Out:
25.3 µs ± 281 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

** Die Zugabe ist schneller und die Geschwindigkeit ist stabil. verlängern ist eine eingebaute Funktion, aber es ist langsam, nicht wahr? ** **.

Detaillierte Geschwindigkeitsmessung

Für dieses Problem

Da es zwei Variablen gibt, messen Sie die Geschwindigkeit, wenn Sie mit ihnen spielen. Subtrahieren Sie dann die Geschwindigkeiten und sehen Sie, welche der "verlängern" und die Addition gewinnt.

Wenn die Liste kurz ist

image.png

** Zusatzvorteil **

Wenn die Liste lang ist

image.png

** Dominanz erweitern **

Ich frage mich, ob es überhaupt an der Implementierung von Python beteiligt ist.

Code

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from time import time


def extend_time(old_i, new_i):
    old = list(range(10 ** old_i))
    new = list(range(10 ** new_i))
    s = time()
    old.extend(new)
    e = time()
    return e - s


def add_time(old_i, new_i):
    old = list(range(10 ** old_i))
    new = list(range(10 ** new_i))
    s = time()
    old += new
    e = time()
    return e - s


extend_time = np.vectorize(extend_time)
add_time = np.vectorize(add_time)


shape = (8, 8)
extend_graph = np.fromfunction(extend_time, shape, dtype=np.int)
add_graph = np.fromfunction(add_time, shape, dtype=np.int)

result = np.where(extend_graph - add_graph > 0, True, False)
sns.heatmap(result, cbar=False, xticklabels=[10 ** i for i in range(shape[0])], yticklabels=[10 ** i for i in range(shape[0])])
plt.ylabel("old list length")
plt.xlabel("new list length")
plt.show()

Recommended Posts

Das Hinzufügen ist schneller als das Hinzufügen und Erweitern der Liste, oder?
Python> Liste> Anhängen () und Erweitern ()> Anhängen: Liste hinzufügen | Erweitern: Element der Liste hinzufügen | Liste hinzufügen mit + =
Fügen Sie Festplatten hinzu, um den SWAP- und / oder Home-Bereich des LVM zu erweitern
Entfernen oder Abrufen von Arrays aus Fasta gemäß der ID-Listendatei
Memorandum (Namen nur Personen mit demselben Nachnamen in der Liste hinzufügen)
Ford-Falkerson-Methode und ihre Anwendungen-Ergänzung zu Kapitel 8 der Algorithmus-Kurzreferenz-
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
Es ist sehr nützlich, Target in Luigi die Methoden save () und load () hinzuzufügen