【问题标题】:How to access an attribute of an arbitrary element of a set如何访问集合中任意元素的属性
【发布时间】:2015-03-14 01:25:10
【问题描述】:

我有一个非空集合S,每个s in S 都有一个属性s.x,我知道它与s 的选择无关。我想从S 中提取这个公共值a=s.x。肯定有比

更好的东西
s=S.pop()
a=s.x
S.add(s)

-- 也许代码很快,但我肯定不应该更改S

澄清:一些答案和 cmets 建议遍历所有 S。我想避免这种情况的原因是S 可能很大;不管S 多大,我认为我上面的方法运行得很快;我唯一的问题是S 发生了变化,我认为没有理由需要更改S

【问题讨论】:

  • 我不太确定你的目的是什么,但像 [x.x for x in S] 这样的东西可以吗?
  • 当然可以(然后我可以只取该列表的第 0 个元素),但如果 S 有一百万个元素怎么办?当答案在我找到的第一个答案中时,为什么要遍历所有这些?请注意,s.x 对于S 中的每个元素s 都是相同的。
  • 你说得对,我不确定你要做什么。

标签: python set


【解决方案1】:

这与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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2019-11-07
    • 2017-05-28
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多