我有以下情况:
import pandas as pd
import numpy as np
stuff = ['Elon Musk', 'elon musk', 'elon Musk', 'Elon Musk is awesome', "Who doesn't love Elon Musk"]我想数一数埃隆·马斯克这个名字出现在“物品”列表的每一个方面的次数。大写或小写都算在内。预期的结果是,它将返回一个值计数5 (因为Elon,大小写不敏感,出现在列表的每个方面。
发布于 2022-08-23 00:07:44
像这样的东西应该能起作用
l = ['Elon Musk', 'elon musk', 'elon Musk', 'Elon Musk is awesome', "Who doesn't love Elon Musk"]
sum(1 for x in l if 'elon musk' in x.lower())输出
5编辑:
如果这个词被重复,你可以使用regex。
import re
l = ['Elon Musk', 'elon musk', 'elon Musk', 'Elon Musk is awesome', "Who doesn't love Elon Musk loving Elon Musk"]
sum(len(re.findall('elon musk', x.lower())) for x in l)输出
6发布于 2022-08-23 00:08:15
要搜索列表,可以执行以下操作:
results = [value for value in values if search.lower() in value.lower()]要将此与您的示例相匹配,您可以这样做
results = [result for result in stuff if 'elon musk' in result.lower()]然后可以使用len(results)获取结果的数量。
发布于 2022-08-23 00:12:21
实际上,最快的方法之一是使用列表理解(而不是迭代器):
>>> len([x for x in stuff if 'elon musk' in x.lower()])
5
# or
>>> sum(['elon musk' in x.lower() for x in stuff])
5当您可以使用列表理解本身时,不使用 sum('elon musk' in x.lower() for x in stuff)或任何sum(iterator)。它也能工作,但实际上要慢一些(在这么小的列表中有一点点)。
https://stackoverflow.com/questions/73452101
复制相似问题