Skip to main content
 首页 » 编程设计

Python:是否有一种更具可扩展性的方法来查找字符串中的所有字符串

2025年05月04日25bluestorm

我手头有一个相当简单的任务:给定一个(小写的)big 字符串和一个(小写的)small 字符串数组,我需要生成 1 if all small 字符串在 big 字符串中,否则为 0。所以这样做的 pythonic 方式就是:

>>> big = 'the quick brown fox jumps over the lazy dog' 
>>> smallTrue = ["quick","dog","fox"] 
>>> smallFalse = ["quick","fox","wolf"] 
>>> int(all([s in big for s in smallTrue])) 
1 
>>> int(all([s in big for s in smallFalse])) 
0 

问题是是否有一种不同的方法来获取 0 和 1,这种方法可以更好地扩展到更大数量的明显更长的 big(想想“典型”科学的抽象paper) 加上一大组更长的 small 数组?

缩放意味着处理时间,因为我的机器有很多 RAM。因此,如果我需要以某种需要更多 RAM 的方式预处理数据,那很好。

之所以提问,是因为我在执行类似的字符串操作任务时遇到了一些可伸缩性问题。

请您参考如下方法:

只需删除方括号,您将拥有一个生成器而不是一个list 推导式。它将延迟而不是急切地评估,避免内存问题。

all(s in big for s in smallTrue) 

此外,您可能不需要 int() 调用,因为 bool 是 int 的子类, True 和False 分别代表1 和0。您甚至可以用它们做数学运算。