gpt4 book ai didi

python - python set方法中的 "not x"如何工作?

转载 作者:行者123 更新时间:2023-12-01 05:30:43 25 4
gpt4 key购买 nike

我是Python3.3的新手,我想从列表中消除重复的成员,我在网上找到了这段简短的代码,但我不知道这段代码背后的逻辑是什么? ,尤其是“not saw_add(x)”部分!

def f7(seq):
seen=set()
seen_add=seen.add
return[x for x in seq if x not in seen and not seen_add(x)]

有人可以帮我解决这个问题吗?!

最佳答案

集合的add方法始终返回NoneNone 在 bool 上下文中被视为 false,因此 not saw_add(x) 始终为 True 短路,因此仅当 x 未按照 see 进行注册时才会执行 seen_add(x)seen_add(x) 是为了跟踪 x 已经被看到的事实,而不是过滤任何内容,这就是为什么 not saw_add(x) 始终为 true。

将列表理解转化为等效循环,我们有

def f7(seq):
seen=set()
seen_add=seen.add
result = []
for x in seq:
if x not in seen and not seen_add(x):
result.append(x)
return result

转换为更易读的形式,并消除seen_add微优化,您找到的代码相当于以下内容:

def f7(seq):
seen=set()
result = []
for x in seq:
if x not in seen:
seen.add(x)
result.append(x)
return result

关于python - python set方法中的 "not x"如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com