2016-10-09 3 views
0

Wenn eine Funktion eine Sequenz seeds von Startwerten erhält, muss sie für jeden einzelnen Startwert die Anzahl zählen, wie oft sie in der zweiten Sequenz xs angezeigt werden. Dann sollte es die Zählungen als eine Liste von ganzen Zahlen in der gleichen Reihenfolge der Startwerte zurückgeben. Wenn seeds doppelte Werte enthält, behalten Sie doppelte Werte in der zurückgegebenen Liste bei. Zum Beispiel sollte count_each([10,20],[10,20,50,20,40,20])[1,3] und count_each('aeiou','encyclopedia') should return [1,2,1,1,0] zurückgeben.Zählen von Startwerten aus der ersten Sequenz in der zweiten Sequenz

Ich bin auf, wie man diese Funktion programmieren. Dies ist, was ich bisher habe, aber ich kann nicht herausfinden, wie genau ich die Anzahl der Startwerte in der zweiten Sequenz zählen würde und nicht nur überprüfen, ob die Werte existieren. Jede Hilfe dazu wäre willkommen.

def count_each(seeds,xs): 

    if seeds in xs: 
     if seeds == True 
    return seeds 
     elif seeds == False 
    return None 
+0

Mögliches Duplikat von [Wie die Häufigkeit der Elemente in einer Liste zählen?] (Http://stackoverflow.com/questions/2161752/how (Zum Zählen der Häufigkeit der Elemente in einer Liste) – Julien

Antwort

1
def count_letter(seeds,xs): 
    for c in seeds: 
     count=0 
     for d in xs: 
      if c==d: 
       count=count+1 
     print (c,"Occured ",count,"times") 

count_letter([10,20],[10,20,30,10]) 
count_letter('aeiou','encyclopedia') 
+0

Während dieses Code-Snippet die Frage [einschließlich einer Erklärung] möglicherweise löst (http://meta.stackexchange.com/questions/114762/Erklären-vollständig-Code-basierte Antworten) hilft wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – andreas

+0

Was sind c und d gleich? Dies scheint die beste Antwort zu sein, aber wenn ich die Funktion teste, gibt sie entweder 1 oder keine zurück und nicht wie oft der Seed-Wert in der zweiten Sequenz erschien. – famguy74

+0

c ist eine Variable, die Zeichen in Seeds für die erste for-Schleife enthält und d hält Zeichen bilden xs für die zweite 'for-Schleife', und dann vergleichen wir das 'c == d', wenn es wahr ist, dann erhöhen Sie den Zähler um 1. –

2

ich kann nicht herausfinden, wie genau ich die Anzahl der Seed-Werte in der zweiten Folge und nicht nur prüfen, ob die Werte existieren zählen würde.

Python-Sequenzen haben eine handliche .count Methode.

>>> [1,1,1,2,3,4,5].count(1) 
3 
>>> "ababababcdefg".count("b") 
4 
2

Check out collections.Counter()

import collections 

def count_each(seeds,xs): 
    c = collections.Counter(xs) 
    return [c[seed] for seed in seeds] 
Verwandte Themen