首选Python方法获取一个长度(/基数)为1的项目而不删除它?

1 python set member cardinality

给定s,下面哪个段看起来更好?

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

要么

if len(s) == 1:
    v = s.pop()
    s.add(v)
    # important stuff using variable v takes place here
Run Code Online (Sandbox Code Playgroud)

要么

if len(s) == 1:
    for v in s:
        # important stuff using variable v takes place here
Run Code Online (Sandbox Code Playgroud)

我猜最后一段是最有效的,但是使用一个从未实际循环的循环并不愚蠢吗?

为什么python集没有替代方法来弹出不删除项目?

这看起来似乎是一个微不足道的问题,但是当我多次遇到这种情况时,它已成为需要抓挠的痒!

det*_*tly 5

为什么python集没有替代方法来弹出不删除项目?

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

v = iter(s).next()
Run Code Online (Sandbox Code Playgroud)

这在Python 3之前有效.在Python 3中,您需要使用内置next函数:

v = next(iter(s))
Run Code Online (Sandbox Code Playgroud)