我正在使用python 3,但我遇到了这个问题:
ListA =[38,40,27,11,1,5,22,7,47,3,11]
ListB = [12,16,38,5,40,27,3]
我需要pyhon来计数ListB中的任何数字连续出现在ListA中的次数。
我正在使用公式ListA.insert(0,int(input(“input new number:”)
,因此在这种情况下的输出应为:3。
因为38、40和27是ListB中的数字,并且是ListA中的前3个数字。
如果没有匹配项(如果ListA中的第一个数字不在ListB中),则输出应为:0
答案 0 :(得分:1)
类似
counter = 0
for value in A:
if value in B:
counter += 1
else:
break
答案 1 :(得分:1)
您可以执行以下操作:
ListA =[38,40,27,11,1,5,22,7,47,3,11]
ListB = [12,16,38,5,40,27,3]
count = 0
for item_a in ListA:
if item_a in ListB:
count += 1
else:
break
print(count)
# 3
仅当元素出现在ListA
的前面并在ListB
中发现时,计数器才会增加计数。
答案 2 :(得分:0)
您可以先将ListB
转换为集合,以进行有效的会员查找:
setB = set(ListB)
for count, a in enumerate(ListA):
if a not in setB:
break
else:
count = len(ListA)
使用示例输入,count
将变为:3
答案 3 :(得分:0)
一种非常简洁的方法是使用itertools.takewhile
函数:
from itertools import takewhile
ListA = [38,40,27,11,1,5,22,7,47,3,11]
ListB = [12,16,38,5,40,27,3]
sum(1 for _ in takewhile(ListB.__contains__, ListA))
# 3
takewhile
将从ListA
中提取项目,只要它们包含在ListB
中(38,40,27)。而sum(1 for _ in <iterable>)
只会对它们进行计数。