GeeksforGeeks

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))



Výstup:

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))



Výstup:

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))



Výstup:

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))



Výstup:

Original list : New indices list : 

Štítky článku :
Značky cvičení :

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.