mehrdimensionale Liste durchsuchen

  • Hallo

    Ich möchte eine Liste mit nachfolgendem Stil durchsuchen:

    list= [ [a,b,c] , [d,e,f], ..... ]

    Ich möchte eine Aktion einleiten sobald die ersten beiden Elemente in der Liste dem Suchmuster entsprechen

    Also etwa so:
    If [a,b] in list:
    MachWasAnderes

    aber das funktioniert nur wenn ich alle 3 Element angebe. Wie überprüfe ich nur die 2 ersten Elemente?

    Merci

  • Finde es trotzdem nicht ganz einfach

    list=[[1,2,3],[4,5,6]]

    for i in list:
    x=any(y==1 for y in i)
    print(x)

    Das geht so. Liefert WAHR

    Kann ich nicht irgendwie beide Elemente suchen also soo ca.?:

    for i in list:
    x=any(y==[1,2] for y in i)
    print(x)

  • Edit:
    noch ein Beispiel mit set()

    Wahrscheinlich gib es noch elegantere und kürzere Wege...

  • Ich finde die folgene Zeile etwas leichter lesbar:

    Code
    for i in itertools.ifilter(lambda x: set(['a', 'b']).issubset(x), meine_listen):
        print "Hit %s" % (i)

    Allerdings bin ich mir nicht sicher ob der TE nicht meint die ersten beiden Elemente der Liste sollen matchen. Dann würde meine Zeile etwas anders aussehen:

    Code
    for i in itertools.ifilter(lambda x: ['a', 'b'] == x[:2], meine_listen):
        print "Hit %s" % (i)

    D.h. es matched nur das erste Element bei

    Code
    meine_listen = [
               ['a', 'b', 'c'],
               ['x', 'a', 'b'],
               ['d', 'e', 'f'],
               ['h', 'j', 'k'],
               ['r', 't', 'z']
               ]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!