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 :