Larutan
Ya kamu bisa:
l = L[1::2]
Dan ini semuanya. Hasilnya akan berisi elemen yang ditempatkan pada posisi berikut ( 0
berbasis, jadi elemen pertama ada di posisi 0
, kedua di 1
dll.):
1, 3, 5
jadi hasilnya (angka sebenarnya) adalah:
2, 4, 6
Penjelasan
Bagian [1::2]
akhir hanyalah notasi untuk pemotongan daftar. Biasanya dalam bentuk berikut:
some_list[start:stop:step]
Jika kita menghilangkan start
, default ( 0
) akan digunakan. Jadi elemen pertama (pada posisi 0
, karena indeks 0
berbasis-) akan dipilih. Dalam hal ini elemen kedua akan dipilih.
Karena elemen kedua dihilangkan, default digunakan (akhir daftar). Jadi daftarnya sedang diulang dari elemen kedua sampai akhir .
Kami juga menyediakan argumen ketiga ( step
) yaitu 2
. Artinya satu elemen akan dipilih, elemen berikutnya akan dilewati, dan seterusnya ...
Jadi, secara ringkas, dalam hal ini [1::2]
berarti:
- ambil elemen kedua (yang, omong-omong, merupakan elemen ganjil, jika Anda menilai dari indeks),
- lewati satu elemen (karena kita punya
step=2
, jadi kita melewatkan satu, sebagai kebalikan dari step=1
yang default),
- ambil elemen selanjutnya,
- Ulangi langkah 2.-3. sampai akhir daftar tercapai,
EDIT : @PreetKukreti memberikan tautan untuk penjelasan lain tentang notasi pemotongan daftar Python. Lihat di sini: Jelaskan notasi irisan Python
Ekstra - mengganti penghitung dengan enumerate()
Dalam kode Anda, Anda secara eksplisit membuat dan meningkatkan penghitung. Dengan Python, hal ini tidak diperlukan, karena Anda dapat menghitung melalui beberapa iterable menggunakan enumerate()
:
for count, i in enumerate(L):
if count % 2 == 1:
l.append(i)
Di atas memiliki tujuan yang persis sama dengan kode yang Anda gunakan:
count = 0
for i in L:
if count % 2 == 1:
l.append(i)
count += 1
Lebih lanjut tentang meniru for
loop dengan penghitung dengan Python: Mengakses indeks dengan loop 'for' Python