【发布时间】:2020-07-16 16:52:02
【问题描述】:
最近,我开始在我的代码中使用集合,我想知道如何知道一个字符串是否在其他字符串中,只使用 sets 而不是可迭代函数 any 我想出的例子是像这样的
set1 = set({"nb","np"})
word = "rainbow"
if any(i in word for i in set1):
print("not a spanish word")
else:
print("probably a spanish word")
所以如果set1的元素增加了(比如加了一个“mm”),那么会因为函数any的迭代次数增加而影响耗时,如果你做一组word字母顺序的信息丢失了,因为该新集合的元素将是单词的字母,在这种情况下,您将不知道 set1 中的字符串是否实际上在单词内部,或者至少我是这么认为的.
【问题讨论】:
-
你的问题是什么?
-
没有any功能怎么办
-
您想在没有
any的情况下这样做,因为您认为它效率低下?我很确定你不会变得更好,因为实际的复杂性不能降低很多。 -
并不是我认为 any 效率低下,而是我认为应该有办法做到这一点,只使用集合
-
基于Python documentation of
any(),any()将在可迭代对象产生真正的元素时立即返回(即短路),因此它应该非常有效。