首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >首选的Python方法是获取具有长度(/cardinality)的集合的项,而不删除它?

首选的Python方法是获取具有长度(/cardinality)的集合的项,而不删除它?
EN

Stack Overflow用户
提问于 2011-05-23 01:10:29
回答 2查看 840关注 0票数 1

给定集合,下面哪个片段看起来更好?

代码语言:javascript
复制
if len(s) == 1:
    v = s.copy().pop()
    # important stuff using variable v takes place here

代码语言:javascript
复制
if len(s) == 1:
    v = s.pop()
    s.add(v)
    # important stuff using variable v takes place here

代码语言:javascript
复制
if len(s) == 1:
    for v in s:
        # important stuff using variable v takes place here

我想最后一个部分是最有效的,但是使用一个从来没有循环的循环看起来是不是很傻呢?

为什么python集没有一个替代方法来弹出不移除项的选项呢?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-23 01:21:23

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

代码语言:javascript
复制
(v,) = the_set

如果the_set不包含确切的一个项,则会引发异常。

票数 3
EN

Stack Overflow用户

发布于 2011-05-23 01:17:44

为什么python没有一个替代方法来弹出不移除项的

呢?

如果您想在不更改set结构的情况下访问第一个(且仅)项,请使用迭代器:

代码语言:javascript
复制
v = iter(s).next()

在Python 3中,您需要使用内置的next函数:

代码语言:javascript
复制
v = next(iter(s))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6091922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档