Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Melaksanakan Penambahan Senarai Secara Elemen dalam Python dengan Cekap?

Bagaimanakah Saya Boleh Melaksanakan Penambahan Senarai Secara Elemen dalam Python dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 06:58:14852semak imbas

How Can I Efficiently Perform Element-Wise Addition of Lists in Python?

Penambahan Senarai Secara Elemen: Kecekapan Pythonic

Apabila memanipulasi senarai, keperluan untuk melaksanakan operasi mengikut elemen sering timbul. Pertimbangkan tugas menambah elemen dua senarai mengikut kedudukan, seperti yang ditunjukkan di bawah:

list1 = [1, 2, 3]
list2 = [4, 5, 6]

Output yang dikehendaki ialah:

[1, 2, 3]
+  +  +
[4, 5, 6]
|| || ||
[5, 7, 9]

Untuk mencapai penambahan mengikut unsur ini, beberapa pendekatan Pythonic wujud :

Kaedah 1: operator.tambah dan map

Modul operator.add menyediakan fungsi yang diperlukan untuk penambahan mengikut unsur. Dengan menggunakan fungsi peta, anda boleh beralih melalui kedua-dua senarai secara serentak dan menggunakan operasi tambah:

from operator import add
result = list(map(add, list1, list2))

Kaedah 2: zip dan Pemahaman Senarai

Fungsi zip menggabungkan elemen senarai menjadi tupel, yang boleh dimanipulasi selanjutnya dalam pemahaman senarai. Pendekatan ini melibatkan pengekstrakan nilai daripada tupel dan menjumlahkannya:

result = [sum(x) for x in zip(list1, list2)]

Pertimbangan Prestasi

Pilihan kaedah mungkin bergantung pada keperluan prestasi. Perbandingan masa berikut menunjukkan bahawa pendekatan peta(tambah, senarai1, senarai2) adalah yang terpantas untuk senarai besar. Kaedah berasaskan zip adalah lebih perlahan disebabkan oleh manipulasi tupel tambahan.

Sebagai contoh, dengan senarai yang mengandungi 100,000 elemen setiap satu:

%timeit from operator import add;map(add, list1, list2)
10 loops, best of 3: 44.6 ms per loop
%timeit from itertools import izip; [a + b for a, b in izip(list1, list2)]
10 loops, best of 3: 71 ms per loop
%timeit [a + b for a, b in zip(list1, list2)]
10 loops, best of 3: 112 ms per loop

Untuk operasi yang lebih kompleks, kaedah tambahan mungkin diperlukan. Walau bagaimanapun, untuk tugas mudah penambahan mengikut unsur, pendekatan yang digariskan di atas menyediakan penyelesaian yang paling Pythonic dan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Penambahan Senarai Secara Elemen dalam Python dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn