Cara membongkar tupel panjang n untuk m
Di Python 3 yang bisa saya lakukan sebagai berikut (lihat juga PEP3132 pada Diperpanjang Iterable Membongkar):
a, *b = (1, 2, 3)
# a = 1; b = (2, 3)
Apa yang bisa saya lakukan untuk mencapai hal yang sama demikian pula elegan di Python 2.x?
Saya tahu bahwa saya bisa menggunakan elemen tunggal akses dan mengiris operasi, tapi aku bertanya-tanya jika ada yang lebih pythonic cara. Kode saya sejauh ini:
a, b = (1, 2, 3)[0], (1, 2, 3)[1:]
# a = 1; b = (2, 3)
45
5
Saya menemukan bahwa terkait PEP3132 memberikan beberapa contoh untuk Python versi 2.x juga:
Pendekatan-pendekatan lain yang diberikan dalam jawaban untuk pertanyaan ini:
Fungsi Daftar Argumen Membongkar Pendekatan
membutuhkan fungsi tambahan definisi/call:
Aku bertanya-tanya mengapa hal ini dilaksanakan dalam membongkar argumen fungsi daftar tapi tidak untuk normal tupel membongkar.
Generator Pendekatan
Kredit. Juga membutuhkan fungsi kustom implementasi. Sedikit lebih fleksibel mengenai jumlah first variabel.
Yang paling pythonic mungkin akan menjadi orang-orang yang disebutkan dalam PEP di atas, saya kira?
Saya mungkin salah, tapi sejauh yang saya tahu
hanya sintaksis gula untuk mengiris dan pengindeksan tupel. Saya menemukan ini berguna, tetapi tidak sangat eksplisit.
I've punya sedikit ini berguna fungsi:
Misalnya:
juga bekerja dengan sedikit argumen:
Dalam menanggapi komentar, anda juga dapat menentukan:
dan menggunakannya seperti ini:
Saya don't pikir ada cara yang lebih baik dari yang anda diposting, tapi di sini adalah sebuah alternatif menggunakan
iter
Tidak yakin tentang konteks, tetapi apa yang tentang .pop(0)?
Saya melihat bahwa ada tuple dalam contoh anda, tetapi jika anda ingin melakukan hal-hal yang anda lakukan, daftar akan lebih cocok, saya pikir? (Kecuali ada beberapa alasan yang baik bagi mereka untuk menjadi abadi tidak diberikan dalam pertanyaan.)