程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

从集合中选择一个项目:Python

发布于2019-11-16 15:28     阅读(219)     评论(0)     点赞(30)     收藏(3)


我创建了一个实用程序函数来从生成器表达式返回期望的单个项目

print one(name for name in ('bob','fred') if name=='bob')

这是个好方法吗?

def one(g):
    try:
        val = g.next()
        try:
            g.next()
        except StopIteration:
            return val
        else:
            raise Exception('Too many values')
    except StopIteration:
        raise Exception('No values')

解决方案


一个更简单的解决方案是使用元组拆包。这已经可以完成您想要的所有事情,包括检查它是否仅包含一项。

单项:

 >>> name, = (name for name in ('bob','fred') if name=='bob')
 >>> name
 'bob'

过多的物品:

>>> name, = (name for name in ('bob','bob') if name=='bob')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

没有项目:

>>> name, = (name for name in ('fred','joe') if name=='bob')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 0 values to unpack


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/156678/ba43e39778c961e7bc07/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)