Apa pendekatan Pythonic untuk mencapai yang berikut ini?
# Original lists:
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
# List of tuples from 'list_a' and 'list_b':
list_c = [(1,5), (2,6), (3,7), (4,8)]
Setiap anggota list_c
adalah tuple, yang anggota pertamanya berasal list_a
dan yang kedua berasal list_b
.
itertools
modul mendefinisikanzip_longest()
metode yang berhenti di akhir daftar terpanjang, mengisi nilai-nilai yang hilang dengan sesuatu yang Anda berikan sebagai parameter.s/zip_longest()/izip_longest()
,. Berganti nama dengan Python 3.x kezip_longest()
.itertools.product()
apakah itu.Dalam python 3.0 zip mengembalikan objek zip. Anda bisa mendapatkan daftar dengan menelepon
list(zip(a, b))
.sumber
Anda dapat menggunakan peta lambda
Ini juga akan berfungsi jika ada panjang daftar asli tidak cocok
sumber
map(None, a,b)
Anda sedang mencari zip fungsi bawaan .
sumber
Saya tidak yakin apakah ini cara pythonic atau tidak tetapi ini tampak sederhana jika kedua daftar memiliki jumlah elemen yang sama:
sumber
Saya tahu ini adalah pertanyaan lama dan sudah dijawab, tetapi untuk beberapa alasan, saya masih ingin memposting solusi alternatif ini. Saya tahu mudah untuk mengetahui fungsi bawaan yang melakukan "keajaiban" yang Anda butuhkan, tetapi tidak ada salahnya Anda tahu Anda bisa melakukannya sendiri.
sumber
card
di dalamif-elif
tidak diperlukan, itu sebabnya Anda memilikicontinue
. (Bahkan, tanpacontinue
Anda tidak perlu mengubah daftar: kedua tugas yang disebutkan sebelumnya kemudian harus disimpan dan menjadi masingcard = (list_1[i], '')
-card = ('', list_2[1])
masing.)Output yang Anda tunjukkan dalam pernyataan masalah bukanlah tupel tetapi daftar
cek untuk
mempertimbangkan Anda ingin hasilnya sebagai tuple dari list_a dan list_b, lakukan
sumber
<map object at 0x000001F266DCE5C0>
atau<zip object at 0x000002629D204C88>
. Setidaknya, solusi tentang peta dan zip (sendirian) tampaknya tidak lengkap (atau terlalu rumit) bagi saya.Satu alternatif tanpa menggunakan
zip
:Dalam hal seseorang ingin mendapatkan tidak hanya tupel 1 dengan 1, 2 dengan 2 ... tetapi semua kemungkinan kombinasi dari 2 daftar, yang akan dilakukan dengan
sumber