Mengapa Pemahaman Senarai Mengungguli Penambahan Senarai
Walaupun persepsi pemahaman senarai sebagai gula ekspresif semata-mata, mereka menunjukkan kelebihan kelajuan yang ketara berbanding lampiran senarai . Jurang ini melangkaui perbezaan ekspresif.
Untuk menggambarkan, pertimbangkan penanda aras masa berikut:
<code class="python">import timeit time = timeit.timeit('t=[]\nfor i in range(10000):\n t.append(i)', number=10000) time2 = timeit.timeit('t=[i for i in range(10000)]', number=10000)</code>
Hasilnya mendedahkan bahawa pemahaman senarai dilaksanakan kira-kira 50% lebih cepat daripada dilampirkan pada senarai.
Sebab Peningkatan Kelajuan
Kefahaman senarai mengeksploitasi beberapa pengoptimuman prestasi:
Contoh
Pertimbangkan coretan kod berikut:
<code class="python">def f1(): l = [] # Create a new list for i in range(5): # Iterate through a range l.append(i) # Append each number to the list def f2(): [i for i in range(5)] # Use list comprehension to create a new list</code>
Menyahpasang fungsi ini dengan modul dis mendedahkan perbezaan:
<code class="python">dis.dis(f1) dis.dis(f2)</code>
Dalam f1, kami memerhatikan penciptaan senarai dan memuatkan serta memanggil atribut tambah (offset 18 dan 20). Walau bagaimanapun, dalam f2, operasi ini tiada, menghasilkan kod yang lebih cekap.
Kesimpulan
Kefahaman senarai mencapai prestasi yang lebih baik dengan menghapuskan pemuatan atribut, panggilan fungsi dan overhed yang berkaitan dengan penggantungan dan penyambungan semula bingkai fungsi. Akibatnya, mereka sering disyorkan untuk membuat senarai baharu yang kelajuan menjadi keutamaan.
Atas ialah kandungan terperinci Mengapa Pemahaman Senarai Lebih Cepat Daripada Senarai Menambah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!