Saya pada dasarnya mencari versi python Combination ofList<List<int>>
Diberikan daftar daftar, saya membutuhkan daftar baru yang memberikan semua kemungkinan kombinasi item di antara daftar.
[[1,2,3],[4,5,6],[7,8,9,10]] -> [[1,4,7],[1,4,8],...,[3,6,10]]
Jumlah daftar tidak diketahui, jadi saya perlu sesuatu yang berfungsi untuk semua kasus. Poin bonus untuk keanggunan!
python
combinations
Lin
sumber
sumber
*a
?*a
berarti ini adalah argumen yang diteruskan ke fungsi atau metode.def fn(a,b,c):
akan menanggapifn(*[1,2,3])
referensia
sebagai input, beralih dariitertools.product(*a)
danyield
ke tuple yang diproduksi olehitertools
dan versi terbalik ( misalnya membuat daftar,reverse()
dan mengubahnya kembali ke tuple). Terbaik ajukan pertanyaan baru.Solusi paling elegan adalah dengan menggunakan itertools.product di python 2.6.
Jika Anda tidak menggunakan Python 2.6, dokumen untuk itertools.product sebenarnya menunjukkan fungsi yang setara untuk melakukan produk dengan cara "manual":
sumber
Saya harap Anda menemukan itu seanggun yang saya lakukan ketika saya pertama kali menemukannya.
sumber
Numpy dapat melakukannya:
sumber
Tidak ada yang salah dengan rekursi langsung untuk tugas ini, dan jika Anda membutuhkan versi yang dapat digunakan dengan string, ini mungkin sesuai dengan kebutuhan Anda:
sumber
Satu dapat menggunakan python dasar untuk ini. Kode membutuhkan fungsi untuk meratakan daftar daftar:
Maka seseorang dapat menjalankan:
Keluaran:
sumber
Keluaran:
sumber