Saya memiliki dua daftar berikut:
first = [1,2,3,4,5]
second = [6,7,8,9,10]
Sekarang saya ingin menambahkan item dari kedua daftar ini ke daftar baru.
output seharusnya
third = [7,9,11,13,15]
The zip
fungsi berguna di sini, digunakan dengan pemahaman daftar.
[x + y for x, y in zip(first, second)]
Jika Anda memiliki daftar daftar (bukan hanya dua daftar):
lists_of_lists = [[1, 2, 3], [4, 5, 6]]
[sum(x) for x in zip(*lists_of_lists)]
# -> [5, 7, 9]
first
panjangnya 10 dansecond
panjangnya 6, hasil zipping iterables akan menjadi panjang 6.>>> lists_of_lists = [[1, 2, 3], [4, 5, 6]]
>>> [sum(x) for x in zip(*lists_of_lists)]
[5, 7, 9]
Dari dokumen
sumber
Dengan asumsi kedua daftar
a
danb
memiliki panjang yang sama, Anda tidak perlu zip, numpy atau apapun.Python 2.x dan 3.x:
sumber
Perilaku default di numpy adalah menambahkan componentwise
output yang mana
sumber
Ini meluas ke sejumlah daftar:
Dalam kasus Anda,
myListOfLists
akan menjadi[first, second]
sumber
izip.from_iterable
?chain
. DiperbaruiCoba kode berikut:
sumber
map(sum, zip(first, second, third, fourth, ...))
Cara mudah dan cepat untuk melakukan ini adalah:
Atau, Anda dapat menggunakan numpy sum:
sumber
sumber
solusi satu-liner
sumber
Jawaban saya diulangi dengan jawaban Thiru yang menjawabnya pada 17 Maret jam 9:25.
Lebih sederhana dan lebih cepat, inilah solusinya:
Kamu butuh numpy!
array numpy bisa melakukan beberapa operasi seperti vektorsumber
Jika Anda memiliki jumlah daftar yang tidak diketahui dengan panjang yang sama, Anda dapat menggunakan fungsi di bawah ini.
Di sini * args menerima sejumlah variabel daftar argumen (tetapi hanya menjumlahkan jumlah elemen yang sama di masing-masing). * Digunakan lagi untuk membongkar elemen dalam setiap daftar.
Keluaran:
Atau dengan 3 daftar
Keluaran:
sumber
Anda dapat menggunakan
zip()
, yang akan "interleave" dua array bersama-sama, dan kemudianmap()
, yang akan menerapkan fungsi ke setiap elemen di iterable:sumber
Ini cara lain untuk melakukannya. Kami menggunakan fungsi __add__ internal dari python:
Keluaran
sumber
Jika Anda ingin menambahkan juga sisa nilai dalam daftar Anda dapat menggunakan ini (ini berfungsi di Python3.5)
sumber
sumber
Ini cara lain untuk melakukannya. Ini bekerja dengan baik untuk saya.
sumber
sumber
Mungkin pendekatan yang paling sederhana:
sumber
Jika Anda menganggap daftar Anda sebagai array numpy, maka Anda perlu menjumlahkannya dengan mudah:
sumber
Bagaimana jika Anda memiliki daftar dengan panjang yang berbeda, maka Anda dapat mencoba sesuatu seperti ini (menggunakan
zip_longest
)sumber
Anda dapat menggunakan metode ini tetapi hanya akan berfungsi jika kedua daftar memiliki ukuran yang sama:
sumber