while 循环计算发生次数
while loop to count occur times
我有两个列表F
和N
,我需要使用while
循环函数来计算F
的每个元素在[=14中出现的频率=].这是我的清单:
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()
有什么建议吗?
您可以简单地使用 Counter
然后使用查找:
<b>from collections import Counter</b>
ncount = Counter(N)
for f in F:
print(f,"occurs in N",<b>ncount[f]</b>,"times")
这将导致时间复杂度 O(|F|+|N|)(假设字典查找发生在 O(1),几乎总是如此)。
您可以将 for
循环转换为 while 循环,如下所示:
<b>i = 0
while i < len(F):
f = F[i]</b>
print(f,"occurs in N",ncount[f],"times")
<b>i += 1</b>
但最好使用 for
循环,因为使用 for
循环可以保证进度等(例如,您不必考虑递增 i
) .
鉴于不允许您使用 Counter
,您可以自己进行计数,例如使用列表理解:
i = 0
while i < len(F):
f = F[i]
print(f,"occurs in N",<b>len([1 for x in N if x == f])</b>,"times")
或使用 sum
:
i = 0
while i < len(F):
f = F[i]
print(f,"occurs in N",<b>sum(x == f for x in N)</b>,"times")
或者你可以使用列表的.count()
函数:
i = 0
while i < len(F):
f = F[i]
print(f,"occurs in N",<b>N.count(f)</b>,"times")
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 循环?
我有两个列表F
和N
,我需要使用while
循环函数来计算F
的每个元素在[=14中出现的频率=].这是我的清单:
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()
有什么建议吗?
您可以简单地使用 Counter
然后使用查找:
<b>from collections import Counter</b>
ncount = Counter(N)
for f in F:
print(f,"occurs in N",<b>ncount[f]</b>,"times")
这将导致时间复杂度 O(|F|+|N|)(假设字典查找发生在 O(1),几乎总是如此)。
您可以将 for
循环转换为 while 循环,如下所示:
<b>i = 0
while i < len(F):
f = F[i]</b>
print(f,"occurs in N",ncount[f],"times")
<b>i += 1</b>
但最好使用 for
循环,因为使用 for
循环可以保证进度等(例如,您不必考虑递增 i
) .
鉴于不允许您使用 Counter
,您可以自己进行计数,例如使用列表理解:
i = 0
while i < len(F):
f = F[i]
print(f,"occurs in N",<b>len([1 for x in N if x == f])</b>,"times")
或使用 sum
:
i = 0
while i < len(F):
f = F[i]
print(f,"occurs in N",<b>sum(x == f for x in N)</b>,"times")
或者你可以使用列表的.count()
函数:
i = 0
while i < len(F):
f = F[i]
print(f,"occurs in N",<b>N.count(f)</b>,"times")
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 循环?