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!