当我们使用迭代器时,元素会按顺序弹出,那么我们如何检查迭代器中是否存在猜测元素?在我的代码中,只有-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
方法一样。
==
运算符是我们唯一可以用来检查迭代器中元素是否存在的运算符吗?
答案 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