Dalam Python, pilihan antara tupel dan senarai untuk penyimpanan data sering timbul. Artikel ini mengkaji perbezaan prestasi antara kedua-dua struktur data ini, memfokuskan pada instantiasi dan mendapatkan semula elemen.
Tuples Secara Umumnya Mengatasi Prestasi
Dalam kebanyakan senario, tupel mempamerkan prestasi unggul melebihi senarai. Kelebihan prestasi ini berpunca daripada beberapa faktor utama:
Lipatan Malar: Tuple pemalar diprakira oleh pengoptimum Python, manakala senarai mesti dibina dari awal.
Sifat Boleh Guna Semula: Running tuple(some_tuple) hanya mengembalikan tuple yang sama secara terus, mengelakkan salinan yang tidak diperlukan. Sebaliknya, list(some_list) memerlukan senarai baharu dibuat dengan menyalin data.
Kekompakan: Tuple mempunyai saiz tetap, membolehkan storan yang lebih padat berbanding senarai, yang melebihi- peruntukkan untuk mengoptimumkan operasi tambah.
Rujukan Terus: Tuples menggabungkan rujukan kepada elemennya secara langsung, manakala senarai mempunyai lapisan alihan tambahan kepada tatasusunan penunjuk luaran. Ini memberikan kelebihan kelajuan untuk carian diindeks dan membongkar.
Instantiation
Apabila bercakap tentang instantiasi, kedua-dua tupel dan senarai mempunyai prestasi yang serupa:
>>> import timeit >>> timeit.timeit("tuple(range(1000))") # Tuples 0.11859810000000012 >>> timeit.timeit("list(range(1000))") # Lists 0.11701059999999988
Pendapatan semula
Walau bagaimanapun, tupel mempamerkan kelajuan perolehan yang lebih pantas:
>>> a = (10, 20, 30) >>> timeit.timeit("a[1]") # Tuples 0.02905340000000018 >>> b = [10, 20, 30] >>> timeit.timeit("b[1]") # Lists 0.02982960000000023
Kesimpulan
Sementara kedua-dua tupel dan senarai memenuhi tujuannya dalam penyimpanan data, tupel umumnya menawarkan prestasi yang lebih baik. Keupayaan lipatan yang berterusan, kebolehgunaan semula, kekompakan dan rujukan unsur langsung memberikan kelebihan yang ketara berbanding senarai untuk banyak aplikasi.
Atas ialah kandungan terperinci Tuples vs. Senarai dalam Python: Bilakah Prestasi Lebih Penting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!