使用Python的首选方法来获取长度(/cardinality)为1的集合的项而不删除它?

2024-04-26 00:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

给定集合s,下面哪一段看起来更好?在

if len(s) == 1:
    v = s.copy().pop()
    # important stuff using variable v takes place here

或者

^{pr2}$

或者

if len(s) == 1:
    for v in s:
        # important stuff using variable v takes place here

我想最后一个片段是最有效的,但是使用一个从来没有真正循环的循环不是很傻吗?在

为什么python集合没有另一种方法来代替pop而不删除项呢?在

这似乎是一个微不足道的问题,但由于我多次遇到这种情况,它已经成为一个需要抓挠的痒!在


Tags: 方法inforlenifhereplacevariable
2条回答

您可以将唯一的元素分配给v,如下所示:

(v,) = the_set

如果the_set不完全包含一个项,则会引发异常。在

Why don't python sets have an alternative method to pop that doesn't remove the item?

如果要在不更改集合结构的情况下访问第一个(也是唯一的)项,请使用迭代器:

v = iter(s).next()

这在Python3之前就可以使用了。在Python3中,需要使用内置的next函数:

^{pr2}$

相关问题 更多 >