懒惰的方式来检查所有生成的元素是否相等

编程入门 行业动态 更新时间:2024-10-18 20:25:22
本文介绍了懒惰的方式来检查所有生成的元素是否相等的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

给出一个产生可比较值的迭代器,这是检查所有结果是否相等的一种惰性方法.即,在不消耗整个发电机的情况下尽快失效.因此 len(set(g))== 1 不起作用.

Given an iterator that yields comparable values, what would be the lazy way to check if all results are equal. That is, fail as soon as possible, without consuming the whole generator. So len(set(g))==1 won't work.

我正在寻找一个简单的表达式/库函数的组合.没有 def s.

I'm looking for a simple expression / combination of library functions. No defs.

推荐答案

由@unutbu给出的表达式

Expression as given by @unutbu

all(y == first for first in gen for y in gen)

测试/演示:

>>> def test(*args): ... for a in args: ... print a, ... yield a ... >>> g = test(1,1,1,1,1,1,1) >>> print all(a == x for a in g for x in g) 1 1 1 1 1 1 1 True >>> g = test(1,1,1,2,1,1,1) >>> print all(a == x for a in g for x in g) 1 1 1 2 False

根据要求提早失败.

更多推荐

懒惰的方式来检查所有生成的元素是否相等

本文发布于:2023-11-29 17:07:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1647041.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:懒惰   元素   方式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!