相关疑难解决方法(0)

python中的'in'运算符功能

我需要除去在字符string1中存在的string2。在这里string1string2只有小写字符 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 time-complexity

4
推荐指数
1
解决办法
98
查看次数

将NaN添加到集合时导致行为不一致的原因

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)

我主要对这种行为的原因感兴趣.但是如果有办法确保一致的行为,那也很高兴知道!

python cpython python-3.x python-internals

3
推荐指数
1
解决办法
78
查看次数