这实际上是关于集合理解的语义的问题,但我首先需要解释上下文.我正在尝试创建一组新的元组,其中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很新,所以我想知道是否有一些我想念的微妙内容.
谢谢!