如何从frozenset中获取任意元素?
问题内容:
我想从中获取一个元素frozenset
(当然,无需修改它,因为frozenset
s是不可变的)。到目前为止,我发现的最佳解决方案是:
s = frozenset(['a'])
iter(s).next()
按预期返回:
'a'
换句话说,有什么方法可以从a中“弹出”一个元素frozenset
而不实际弹出它?
问题答案:
(总结评论中给出的答案)
您的方法与任何方法一样好,但要注意,从Python 2.6开始,您应该使用next(iter(s))
而不是iter(s).next()
。
如果要使用 随机 元素而不是 任意 元素,请使用以下命令:
import random
random.sample(s, 1)[0]
以下是一些示例,展示了两者之间的区别:
>>> s = frozenset("kapow")
>>> [next(iter(s)) for _ in range(10)]
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> import random
>>> [random.sample(s, 1)[0] for _ in range(10)]
['w', 'a', 'o', 'o', 'w', 'o', 'k', 'k', 'p', 'k']