我有一个非空集S
,每个s in S
都有一个属性s.x
,我知道该属性与s
的选择无关。我想从a=s.x
中提取这个共同值S
。肯定有比
s=S.pop()
a=s.x
S.add(s)
- 也许代码很快但肯定我不应该改变S
?
澄清:一些答案和评论建议迭代所有S
。我想避免这种情况的原因是S
可能很大;我认为上面的方法很快就会跑得很快S
;我唯一的问题是S
发生了变化,我认为没有必要更改S
。
答案 0 :(得分:2)
这与this question几乎相同但不完全相同,因为只有一个元素可以访问集合中的某个元素 - 这里有解决方案可以在这里工作和其他工作但效率低下的人。但是使用next(iter(something_iterable))
非破坏性地获取元素的一般技巧仍然适用:
>>> S = {1+2j, 2+2j, 3+2j}
>>> next(iter(S))
(2+2j) # Note: could have been any element
>>> next(iter(S)).imag
2.0