Ich habe eine Liste:Digit Mustervergleich
a = [1, 2, 4, 5, 8, 2, 4, 2, 4, 6, 7]
Ich mag würde zählen, wie oft 2, 4
zusammen erscheinen
(2 at index i and 4 at index i+1).
Wie kann ich das tun?
Ich habe eine Liste:Digit Mustervergleich
a = [1, 2, 4, 5, 8, 2, 4, 2, 4, 6, 7]
Ich mag würde zählen, wie oft 2, 4
zusammen erscheinen
(2 at index i and 4 at index i+1).
Wie kann ich das tun?
Um dies zu tun, müssen Sie jedes Paar in Ihrer gegebenen Liste überprüfen, um festzustellen, ob das Paar 2
und 4
enthält. In Python können Sie Paare mithilfe der integrierten Funktion zip
erstellen.
Um benachbarte Paare zu erzeugen, liefern wir die Liste a
als erstes Argument zu zip
und die gleichen Liste eine Position nach vorne:
list(zip(a, a[1:])) # a[1:] is [2, 4, 5, 8, 2, 4, 2, 4, 6, 7]
Dies erzeugt Paaren der Form:
[(1, 2), (2, 4), (4, 5), (5, 8), (8, 2), (2, 4), ...]
Nun, was wir tun können ist iterieren durch diese Paare (mit for
), entpacken Sie sie zu Variablen (i
und j
) und testen Sie unseren Zustand (einer ist gleich 2
und der andere zu 4
). Das sieht wie folgt aus:
[i == 2 and j == 4 for i, j in zip(a, a[1:])]
Dies erzeugt eine Liste mit True/False
Einträge für Paare, die Erfolg haben und nicht die Bedingung, die wir gesetzt:
[False, True, False, False, False, True, False, True, False, False]
Hier ist, wo eine weitere integrierte Funktion ist praktisch, sum()
. Sie können sum
mit einer Liste von Werten versorgen und diese zu einem einzigen Wert summieren; zum Glück, in Python
, True
als 1
behandelt wird, so sum
kann es leicht zusammenzufassen und ein Ergebnis finden, wenn wir die Liste liefern wir vorher erstellt:
sum(i == 2 and j == 4 for i,j in zip(a, a[1:]))
Dadurch hilft uns das Endergebnis 3
zu erreichen. ergibt sich wieder 3
count = 0
for i,j in zip(a, a[1:]):
if i == 2 and j == 4:
count += 1
print(count)
als die sum
Lösung tut:
In einem prozeduralen Weg, dies kann übersetzt werden.
Verbinden Sie die Liste in eine Zeichenfolge und suchen Sie nach '24'
.
>>> a = [1, 2, 4, 5, 8, 2, 4, 2, 4, 6, 7]
>>> ''.join(map(str, a)).count('24')
3
Erstaunlich, das hat funktioniert! Danke Jim! – user6837684