Vakiintuneesti haluamme löytää indeksin, jossa tietty arvo sijaitsee. Siihen on monia menetelmiä, kuten index()
avulla jne. Joskus on kuitenkin tarpeen löytää kaikki tietyn arvon indeksit, jos arvolla on useita esiintymiä luettelossa.
Keskustellaan tietyistä tavoista löytää arvon indeksit annetusta listasta.
Metodi #1 : Naivistinen menetelmä
Voidaan toteuttaa tämä tehtävä iteroimalla listan läpi ja tarkistamalla kyseinen arvo ja vain liittää arvon indeksi uuteen listaan ja tulostaa se. Tämä on perus brute force -menetelmä tämän tehtävän saavuttamiseksi.
test_list
=
print
(
"Original list : "
+
str
(test_list))
res_list
=
for
i
in
range
(
0
,
len
(test_list)) :
if
test_list
=
=
3
:
res_list.append(i)
print
(
"New indices list : "
+
str
(res_list))
Original list : New indices list :
Menetelmä #2 : Listan ymmärtäminen
Listan ymmärtäminen on vain lyhennetekniikka raa’an voiman tehtävän suorittamiseksi, se käyttää vain vähemmän koodirivejä tehtävän suorittamiseen ja säästää siten ohjelmoijan aikaa.
test_list
=
print
(
"Original list : "
+
str
(test_list))
res_list
=
=
=
3
]
print
(
"New indices list : "
+
str
(res_list))
Original list : New indices list :
Menetelmä #3 : Käyttämällä enumerate()
Käyttämällä enumerate()
voimme saavuttaa samanlaisen tehtävän, tämä on hieman nopeampi tekniikka kuin edellä, ja siksi sitä suositellaan käytettäväksi listan ymmärtämistekniikan sijaan.
test_list
=
print
(
"Original list : "
+
str
(test_list))
res_list
=
print
(
"New indices list : "
+
str
(res_list))
Original list : New indices list :
Menetelmä #4 : Käyttämällä filter()
Tämä on vielä yksi menetelmä, jota voidaan käyttää tämän tietyn tehtävän suorittamiseen, filter()
pystyy yleensä suorittamaan suodatustehtäviä ja näin ollen sitä voidaan käyttää myös tässä tilanteessa tämän tehtävän suorittamiseen.
test_list
=
print
(
"Original list : "
+
str
(test_list))
res_list
=
list
(
filter
(
lambda
x: test_list
=
=
3
,
range
(
len
(test_list))))
print
(
"New indices list : "
+
str
(res_list))
Original list : New indices list :