在python的迭代器中检查元素的存在

时间:2018-09-23 02:52:26

标签: python iterator

当我们使用迭代器时,元素会按顺序弹出,那么我们如何检查迭代器中是否存在猜测元素?在我的代码中,只有-pdbpass似乎有效:

mysqldump -udbuser --password= --databases dbname

in在这种情况下不太可能起作用,因为它会检查两个对象是否是同一对象,但是t = "cawqv" it = iter(t) print(next(it)) print("a" in it) print("w" is it) print("w" == it) print("w" in it) >> c True False False True 只关心它们的值,就像Java中的is方法一样。 ==运算符是我们唯一可以用来检查迭代器中元素是否存在的运算符吗?

1 个答案:

答案 0 :(得分:0)

"w" == it正在检查w(一个字符串)是否等于您的迭代器,显然它是False,因为您的迭代器封装了一个可能包含或不包含w的序列。要使用相等性检查元素是否存在,您必须实际迭代迭代器,然后检查迭代过程中遇到的任何元素是否等于您的搜索元素,即:

print(any(i == "w" for i in it))

但这是print("w" in it)内部所做的,无论如何。请记住,上面的耗尽(部分匹配,如果元素不匹配则完全耗尽),就像"w" in it一样,因为您需要遍历迭代器以确定如果任何元素与您的搜索元素匹配,例如

t = "cawqv"
it = iter(t)
print("w" in it)  # True
print("w" in it)  # False - we're pass the `w` point by now
print("q" in it)  # False - we already exhausted our iterator