Dalam program saya, pengguna memasukkan nomor n
, dan kemudian memasukkan n
jumlah string, yang disimpan dalam daftar.
Saya perlu kode sedemikian rupa sehingga jika ada indeks daftar tertentu, kemudian jalankan fungsi.
Ini dibuat lebih rumit oleh fakta bahwa saya telah bersarang jika pernyataan tentang len(my_list)
.
Berikut adalah versi sederhana dari apa yang saya miliki sekarang, yang tidak berfungsi:
n = input ("Define number of actors: ")
count = 0
nams = []
while count < n:
count = count + 1
print "Define name for actor ", count, ":"
name = raw_input ()
nams.append(name)
if nams[2]: #I am trying to say 'if nams[2] exists, do something depending on len(nams)
if len(nams) > 3:
do_something
if len(nams) > 4
do_something_else
if nams[3]: #etc.
python
python-2.7
pengguna1569317
sumber
sumber
n
sebagai bilangan bulat, bukan daftar. Saya bingung.n
bukannams
diif
slen
daftar tersebut setidaknya memiliki nilai tertentu?Jawaban:
Mungkinkah lebih bermanfaat bagi Anda untuk menggunakan panjang daftar
len(n)
untuk menginformasikan keputusan Anda daripada memeriksan[i]
untuk setiap panjang yang mungkin?sumber
Saya perlu kode sedemikian rupa sehingga jika ada indeks daftar tertentu, kemudian jalankan fungsi.
Ini adalah penggunaan yang sempurna untuk blok percobaan :
Namun, menurut definisi, semua item dalam daftar Python ada
0
danlen(the_list)-1
ada (yaitu, tidak perlu dicoba, kecuali jika Anda tahu0 <= index < len(the_list)
).Anda bisa menggunakan penghitungan jika Anda ingin indeks antara 0 dan elemen terakhir:
Jika Anda mencari pemikiran 'indeks' tertentu, saya pikir Anda mengajukan pertanyaan yang salah. Mungkin Anda harus mempertimbangkan untuk menggunakan wadah pemetaan (seperti dict) versus wadah urutan (seperti daftar). Anda dapat menulis ulang kode Anda seperti ini:
Berjalan seperti ini:
Anda juga dapat menggunakan metode .get daripada mencoba / kecuali untuk versi yang lebih pendek:
sumber
try
tidak tidak memberitahu Anda jika indeks ada hanya jika fetchable - take-1
- indeks yang tidak benar-benar ada tetapi nilai akan dikembalikan.len(nams)
harus sama dengann
di kode Anda. Semua indeks0 <= i < n
"ada".sumber
Ini dapat dilakukan hanya dengan menggunakan kode berikut:
sumber
Anda sudah tahu cara menguji ini dan sebenarnya sudah melakukan tes seperti itu dalam kode Anda .
Indeks berlaku untuk daftar panjang
n
yang0
melaluin-1
inklusif.Dengan demikian, daftar memiliki indeks
i
jika dan hanya jika panjang daftar setidaknyai + 1
.sumber
Menggunakan panjang daftar akan menjadi solusi tercepat untuk memeriksa apakah ada indeks:
Ini juga menguji indeks negatif, dan sebagian besar jenis urutan (Suka
ranges
danstr
s) yang memiliki panjang.Jika Anda perlu mengakses item di indeks itu setelah itu, lebih mudah untuk meminta maaf daripada izin , dan juga lebih cepat dan lebih Pythonic. Gunakan
try: except:
.Ini akan bertentangan dengan:
sumber
Jika Anda ingin mengulang data aktor yang dimasukkan:
sumber
ok, jadi saya pikir itu sebenarnya mungkin (demi argumen):
sumber
3 in range(len(your_list)
3 in xrange(len(your_list)
- mungkin tidak bisa melakukan lebih baik dari iniAnda dapat mencoba sesuatu seperti ini
sumber
Oneliner:
Contoh lengkap:
Sekadar info. Imho,
try ... except IndexError
solusi yang lebih baik.sumber
Jangan biarkan ada ruang di depan tanda kurung Anda.
Contoh:
Kiat: Anda harus menambahkan komentar di atas dan / atau di bawah kode Anda. Bukan di belakang kode Anda.
Semoga harimu menyenangkan.
sumber
Banyak jawaban, bukan yang sederhana.
Untuk memeriksa apakah indeks 'id' ada di kamus kamus:
mengembalikan true jika 'usia' ada.
sumber