Saya ingin mengulang daftar memeriksa setiap item terhadap yang mengikutinya.
Apakah ada cara saya bisa mengulang semua kecuali item terakhir yang digunakan untuk x in y? Saya lebih suka melakukannya tanpa menggunakan indeks jika saya bisa.
Catatan
freespace menjawab pertanyaan saya yang sebenarnya, itulah sebabnya saya menerima jawabannya, tetapi SilentGhost menjawab pertanyaan yang seharusnya saya tanyakan.
Permintaan maaf untuk kebingungan.
y
generator?cara termudah untuk membandingkan item urutan dengan yang berikut:
sumber
Jika Anda ingin mendapatkan semua elemen dalam urutan pasangan secara bijak, gunakan pendekatan ini (fungsi berpasangan adalah dari contoh dalam modul itertools).
Jika Anda perlu membandingkan nilai terakhir dengan beberapa nilai khusus, rangkai nilai itu sampai akhir
sumber
jika Anda bermaksud membandingkan item ke-n dengan item ke-1 dalam daftar yang juga dapat Anda lakukan
perhatikan tidak ada pengkodean yang terjadi di sana. Ini seharusnya ok kecuali Anda merasa sebaliknya.
sumber
Untuk membandingkan setiap item dengan item berikutnya dalam iterator tanpa membuat daftar:
sumber
Ini menjawab apa yang seharusnya ditanyakan OP , yaitu melintasi daftar yang membandingkan elemen berurutan ( jawaban SilentGhost yang luar biasa ), namun digeneralisasi untuk grup mana pun ( n-gram ): 2, 3, ...
n
:zip(*(l[start:] for start in range(0, n)))
Contoh:
Penjelasan:
l[start:]
menghasilkan daftar / generator mulai dari indeksstart
*list
atau*generator
: meneruskan semua elemen ke fungsi penutupzip
seolah-olah dituliszip(elem1, elem2, ...)
catatan:
AFAIK, kode ini sangat malas. Tidak diuji.
sumber