我需要除去在字符string1中存在的string2。在这里string1,string2只有小写字符 az 在给定的条件下,string1每次的长度都会更大。
我正在使用in运营商:
def removeChars (string1, string2):
for char in string2:
if char in string1:
string1 = string1.replace(char, '')
return string1
Run Code Online (Sandbox Code Playgroud)
但我在 Stack Overflow 上读到一个答案,上面写着:
对于 list、tuple、set、frozenset、dict 或 collections.deque 等容器类型,表达式
x in y等效于any(x is e or x == e for e in y)。
这意味着in操作员for在幕后使用了一个循环。
所以我的问题是,在for我的代码循环中,我应该考虑使用嵌套for循环,因为in操作员for在后台使用循环吗?如果是,这个程序的时间复杂度是多少?
Python的集合与NaNs(现在直播)的行为令人费解(至少对我而言):
>>> float('nan') in {float('nan')} # example 1
False
>>> nan = float('nan') # example 2
>>> nan in {nan}
True
Run Code Online (Sandbox Code Playgroud)
起初,我错误地认为,这是==-operator 的行为,但显然不是这种情况,因为两种情况都False按预期产生(这里是实时的):
>>> float('nan') == float('nan')
False
>>> nan = float('nan')
>>> nan == nan
False
Run Code Online (Sandbox Code Playgroud)
我主要对这种行为的原因感兴趣.但是如果有办法确保一致的行为,那也很高兴知道!