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
Lepaskan: 2024-12-05 06:58:14
asal
820 orang telah melayarinya

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]
Salin selepas log masuk

Output yang dikehendaki ialah:

[1, 2, 3]
+  +  +
[4, 5, 6]
|| || ||
[5, 7, 9]
Salin selepas log masuk

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))
Salin selepas log masuk

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)]
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan