2017-04-03 9 views
0

FNの2つのリストがあり、Fの各要素がどれくらい頻繁にNに含まれるかをカウントするには、ループ機能を使用する必要があります。ここに私のリストです:ループが発生する時間

F = [4,7,2] 
N = [2,5,4,2,5,9,3,2,3,7,3,4] 

私はこのような結果を得ることを期待:

4 occurs in N 2 times 
7 occurs in N 1 times 
2 occurs in N 3 times 

ここに私のコードは次のとおりです。

index = 0 
while index < len(N): 
    value = N[index] 
    print (value) 
    index = index +1 
else: 
    print(index, "occurs in N", value, "times") 
print() 

任意の提案ですか?

あなたがあるSimpy Counterを使用して、使用検索を使用することができます
+0

if文を使用して、N(index)== Fの要素を調べ、if文がTrueである回数をカウントする必要があります。 – plasmon360

答えて

0
f = [4, 7, 2] 
n = [2, 5, 4, 2, 5, 9, 3, 7, 3, 4] 

index1 = 0 

while index1 < len(f): 
    value = f[index1] 
    count = 0 
    index2 = 0 
    while index2 < len(n): 
     if n[index2] == value: 
      count += 1 
     index2 += 1 
    print(value, "occurs in N", count, "times") 
    index1 += 1 

これはwhileループのみの解決策ですが、上記の答えのようにカウンタを使用します。なぜあなたはwhileループを使用する必要がありますか?

+0

なぜ 'n.count(value)'だけでなく2番目のwhileループを使うのですか? – Prof

+0

私は彼女の質問を理解しているので、彼女はwhileループを使うことが許されているだけで、n.count(value)は本当に良いでしょう。 @Prof –

3

from collections import Counter 

ncount = Counter(N) 

for f in F: 
    print(f,"occurs in N",ncount[f],"times")

これは時間複雑にOなります(| F | + | N |)を(与えられた辞書検索が(Oで起こります1)、これはほぼ常にそうです)。

次のように、whileループにforループを回すことができますなど、

i = 0 while i < len(F): f = F[i] 
    print(f,"occurs in N",ncount[f],"times") 
    i += 1

をしかし、forループが進行したため、forループを使用することをお勧めしますが保証されている(例えば、あなたはしないでください増分について考える必要がありますi)。

i = 0 
while i < len(F): 
    f = F[i] 
    print(f,"occurs in N",len([1 for x in N if x == f]),"times")

sumを使用しての:

i = 0 
while i < len(F): 
    f = F[i] 
    print(f,"occurs in N",sum(x == f for x in N),"times")

それともあなたができるあなたがCounterを使用することはできません考えると

、リストの内包表記を使用して、インスタンスのために、自分自身をカウントを行うことができますリストの.count()機能を使用してください。

i = 0 
while i < len(F): 
    f = F[i] 
    print(f,"occurs in N",N.count(f),"times")
+0

@ WIllem Van Onsemありがとうございますが、forループの代わりにwhileループを使用する必要があります。私はどのようにコードを書くためにループを使用する方法に立ち往生しています... – Sophie

+0

@Sophie:あなたは 'カウンター'を使用することができますか? –

+0

私たちはCounterを使うことが許されていないので、私はこの質問に混乱しています。 – Sophie

関連する問題