小编Chr*_*del的帖子

在Python中设置理解并测试正在创建的集合中的成员资格

这实际上是关于集合理解的语义的问题,但我首先需要解释上下文.我正在尝试创建一组新的元组,其中touple中的配对值是唯一的,无论对中的值的顺序如何.简化我的实际程序,我所拥有的是类似的{(1, 2), (2, 1), (3, 4)},我想得到的{(1, 2), (3, 4)}

我尝试过这样的事情:

oldSet = {(1, 2), (2, 1), (3, 4)}

newSet = set()
newSet = {(val1, val2) for (val1, val2) in oldSet if not (val2, val1) in newSet}
Run Code Online (Sandbox Code Playgroud)

然而,newSet就是{(1, 2), (2, 1), (3, 4)},这意味着什么是错我的条件表达式.我对理解的理解表明,以上是这样的语法糖:

newSet =  set()
for (val1, val2) in oldSet:
  if not (val2, val1) in newSet:
    newSet.add((val1, val2))
Run Code Online (Sandbox Code Playgroud)

这种传统的循环结构工程(newSet{(1, 2), (3, 4)}).是否存在导致条件在newSet任何成员之前被评估的理解?我对Python很新,所以我想知道是否有一些我想念的微妙内容.

谢谢!

python python-3.x set-comprehension

2
推荐指数
1
解决办法
56
查看次数

标签 统计

python ×1

python-3.x ×1

set-comprehension ×1