首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python产生多个赋值

Python产生多个赋值
EN

Stack Overflow用户
提问于 2014-02-22 22:36:16
回答 1查看 128关注 0票数 2

我通常会尽可能地使用产率,但我不知道如何在这样的代码上这样做:

代码语言:javascript
复制
numbers = [1,2,3,4,5,6,7,8,9,10]

def odd_and_even(numbers):
    odd = []
    even = []
    for number in numbers:
        if number % 2:
            odd.append(number)
        else:
            even.append(number)
    return (odd, even)

显然,在上述情况下,我可以将它重写为两个不同的函数,但是对于一些更复杂的函数,这可能在计算上相当昂贵,因为我将运行两倍的检查。

如何使上面的代码使用产率?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 22:47:45

使用 function

代码语言:javascript
复制
import itertools

def partition(items, predicate=bool):
    a, b = itertools.tee((predicate(item), item) for item in items)
    return ((item for pred, item in a if not pred),
            (item for pred, item in b if pred))

odd, even = partition(numbers, lambda n: n % 2 == 0)

如果oddeven没有几乎同步使用,或者如果谓词不昂贵,那么列表版本(从问题中)应该会更快。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21961550

复制
相关文章

相似问题

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