Mari kita anggap saya memiliki daftar seperti ini:
mylist = ["a","b","c","d"]
Untuk mendapatkan nilai yang dicetak bersama dengan indeks mereka, saya dapat menggunakan enumerate
fungsi Python seperti ini
>>> for i,j in enumerate(mylist):
... print i,j
...
0 a
1 b
2 c
3 d
>>>
Sekarang, ketika saya mencoba menggunakannya di dalam list comprehension
itu memberi saya kesalahan ini
>>> [i,j for i,j in enumerate(mylist)]
File "<stdin>", line 1
[i,j for i,j in enumerate(mylist)]
^
SyntaxError: invalid syntax
Jadi, pertanyaan saya adalah: apa cara yang benar untuk menggunakan enumerate dalam pemahaman daftar?
python
list
iteration
list-comprehension
RanRag
sumber
sumber
,
tidak yang()
. Jadi "memasukkan kei,j
dalam tuple" tidak masuk akal, karenai,j
sudah menjadi tupel! Masalahnya adalah daftar pengurai kebutuhan parens untuk grup pernyataan.Hanya untuk benar-benar jelas, ini tidak ada hubungannya dengan
enumerate
dan semuanya berkaitan dengan sintaksis pemahaman daftar.Pemahaman daftar ini mengembalikan daftar tupel:
ini daftar dicts:
daftar daftar:
kesalahan sintaksis:
Yang tidak konsisten (IMHO) dan membingungkan dengan sintaks pemahaman kamus:
Dan satu set tupel:
Seperti yang dinyatakan oleh Óscar López, Anda bisa langsung melewatkan tomel enumerasi:
sumber
Atau, jika Anda tidak bersikeras menggunakan pemahaman daftar:
sumber
Jika Anda menggunakan daftar panjang, tampaknya pemahaman daftar lebih cepat, belum lagi lebih mudah dibaca.
sumber
[t for t in enumerate(my list)]
bahkan lebih cepat.Inilah cara untuk melakukannya:
Atau, Anda dapat melakukan:
Alasan Anda mendapatkan kesalahan adalah karena Anda melewatkan () di sekitarnya
i
danj
menjadikannya tupel.sumber
Jelaskan secara eksplisit tentang tupel.
sumber
Semua jawaban bagus kawan. Saya tahu pertanyaan di sini khusus untuk pencacahan tetapi bagaimana dengan sesuatu seperti ini, hanya perspektif lain
Ini menjadi lebih kuat, jika seseorang harus mengulang beberapa daftar secara paralel dalam hal kinerja. Hanya pemikiran saja
sumber