2016-10-09 8 views
0

関数にシード値のシーケンスseedsが与えられている場合、すべてのシード値が2番目のシーケンスxsに表示される回数をカウントする必要があります。次に、シード値と同じ順序で、整数のリストとしてカウントを返します。 seedsに重複値が含まれている場合は、返されたリストに重複カウントを保持します。たとえば、count_each([10,20],[10,20,50,20,40,20])は、[1,3]count_each('aeiou','encyclopedia') should return [1,2,1,1,0]を返します。第2シーケンスの最初のシーケンスからのシード値を計算する

私はこの機能をどのようにプログラムするかについて固執しています。これは私がこれまで行ってきたことですが、値が存在するかどうかを確認するだけでなく、2番目のシーケンスのシード値の数をどのくらい正確にカウントするかを理解できません。これについての助けに感謝します。

def count_each(seeds,xs): 

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

可能な複製[リスト内の要素の頻度をカウントするには?](http://stackoverflow.com/questions/2161752/howリスト内の要素の頻度を数えてカウントする) – Julien

答えて

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

このコードスニペットは質問を解決するかもしれないが[説明を含む](http://meta.stackexchange.com/questions/114762/explain-entire-code-based-answers)は、あなたの投稿の質を向上させるのに本当に役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – andreas

+0

cとdはどのようなものですか?これは最善の答えのようですが、関数をテストすると、1または0を返し、シード値が2番目のシーケンスに何回出現したかはわかりません。 – famguy74

+0

cは、最初のforループの種を保持する変数です。文字がxsを2回目の 'for loop'に入力した後、この 'c == d'を比較し、真の場合は1ずつ増加させます。 –

2

私は、第二の配列中のシード値の数をカウントした値が存在する場合だけチェックしていないだろうか、正確に把握することはできません。

Pythonシーケンスには、便利な.countメソッドがあります。

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

チェックアウトcollections.Counter()

import collections 

def count_each(seeds,xs): 
    c = collections.Counter(xs) 
    return [c[seed] for seed in seeds] 
関連する問題