Obvykle potřebujeme najít index, ve kterém se daná hodnota nachází. Existuje mnoho metod, jak toho dosáhnout, například pomocí index()
apod. Někdy však vyžadujeme najít všechny indexy konkrétní hodnoty v případě, že se v seznamu vyskytuje vícekrát.
Probereme si některé způsoby, jak najít indexy hodnoty v daném seznamu.
Způsob č. 1 : Naivní metoda
Tuto úlohu můžeme splnit tak, že iterujeme seznam a zkontrolujeme, zda se v něm nachází daná hodnota, a index hodnoty pouze doplníme do nového seznamu a ten vypíšeme. To je základní metoda hrubé síly pro dosažení této úlohy.
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 :
Metoda č. 2 : Použití seznamového porozumění
Seznamové porozumění je pouze zkrácená technika pro dosažení úlohy hrubou silou, jen používá méně řádků kódu pro dosažení úlohy, a tudíž šetří čas programátorů.
test_list
=
print
(
"Original list : "
+
str
(test_list))
res_list
=
=
=
3
]
print
(
"New indices list : "
+
str
(res_list))
Original list : New indices list :
Metoda #3 : Pomocí enumerate()
Pomocí enumerate()
můžeme dosáhnout podobného úkolu, tato technika je o něco rychlejší než výše uvedená, a proto se doporučuje používat místo techniky porozumění seznamu.
test_list
=
print
(
"Original list : "
+
str
(test_list))
res_list
=
print
(
"New indices list : "
+
str
(res_list))
Original list : New indices list :
Metoda č. 4 : Použití filter()
Jedná se o další metodu, kterou lze použít k dosažení tohoto konkrétního úkolu, filter()
obvykle umí provádět úlohy filtrování, a proto ji lze použít i v této situaci k dosažení tohoto úkolu.
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 :