我想要一个在字符串内部查找子字符串的列表,并接收子字符串在该字符串中出现的次数。
list = ['one', 'two', 'three']
str = "one one two four five six"
count = str.count(list)
所以在这个例子中,计数应该是 3。但是,
.count()
由于某种原因无法从列表中读取字符串,所以我不知道如何解决这个问题。
一种方法是将
sum
与生成器表达式结合使用,并利用 set
进行 O(1) 查找。 str.split()
将字符串拆分为列表,并以空格分隔。
str_set = {'one', 'two', 'three'}
x = 'one one two four five six'
count = sum(i in str_set for i in x.split())
print(count) # 3
这样做的原因是
bool
是 int
的子类,因此我们可以将 True
元素相加,就好像它们是整数一样。
请注意,您有一个列表和字符串,不涉及元组。此外,不要在类之后命名变量(例如
list
、str
、set
)。
我想你想要的是以下内容
count = sum([str.count(e) for e in tup))
其中
sums
substring
中的任意 tup
出现在 str
中的次数。
此外,您的
tuple
是 list
。要使其成为 tuple
(不可变),请使用 (
('one', 'two', 'three')
此外,您应该使用变量名称
str_
(标准 Python 约定)以避免重载 str
对象。
使用生成器表达式和
sum
:
count = sum(1 for x in the_string.split(" ") if x in tup)