J'ai un tableau et une entrée, si j'entre quelque chose que je veux utiliser .startswith() avec mon tableau, par exemple si j'ai ceci:

Array = ['foo','bar']

Et si j'entre "fo", je veux qu'il corresponde à "foo", puis renvoie l'index, dans ce cas 0. Comment pourrais-je faire ça?

0
npzanonymz 8 mars 2016 à 20:41

3 réponses

Meilleure réponse

Voici une solution. J'ai parcouru la liste et pour chaque élément vérifié s'ils commencent par la chaîne 'fo' (ou ce que vous voulez vérifier). S'il commence par cette chaîne, il affiche l'index de cet élément. J'espère que ça aide!

Array = ['foo', 'bar']

for item in Array:
    if item.startswith('fo'):
        print(Array.index(item))
1
Mark Skelton 8 mars 2016 à 18:02

La réponse de MaryPython est généralement correcte. Alternativement, dans O (n) au lieu de O (n ^ 2), vous pouvez utiliser

for index, item in enumerate(my_list):
       if item.startswith('fo'):
            print(index)

J'ai utilisé enumerate pour parcourir l'index avec l'élément

Notez que l'implémentation de Marky échoue sur ce tableau

 ['fo','fo','fobar','fobar','hi']

Car .index renvoie toujours la première instance d'une occurrence répétée (mais sinon sa solution est fine et intuitive)

2
en_Knight 8 mars 2016 à 18:01
#!/usr/bin/python
# -*- coding: ascii -*-

Data = ['bleem', 'flargh', 'foo', 'bar' 'beep']

def array_startswith(search, array):
    """Search an iterable object in order to find the index of the first
    .startswith(search) match of the items."""
    for index, item in enumerate(array):
        if item.startswith(search):
            return(index)
    raise(KeyError)
    ## Give some sort of error. You probably want to raise an error rather
    ##     than returning None, as this might cause a logic error in the
    ##     later program. I think KeyError is correct, based on the question.
    ## See Effective Python by Brett Slatkin, Page 29...

if __name__ == '__main__':
    lookfor='fo'
    try:
        result=array_startswith(lookfor, Data)
    except KeyError as e:
        print("'{0}' not found in Data, Sorry...".format(lookfor))
    else:
        print("Index where '{0}' is found is: {1}. Found:{2}".format(lookfor, 
            result, Data[result]))
    finally:
        print("Try/Except/Else/Finally Cleanup happens here...")
    print("Program done.")
0
Margath 8 mars 2016 à 18:37