首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >条件在python中的生成器

条件在python中的生成器
EN

Stack Overflow用户
提问于 2022-10-22 17:48:58
回答 1查看 41关注 0票数 -1

从预定义的区间a=10000中提取,b=99999将用随机值填充列表(lst),同时考虑到以下原则:在偶数索引上,站立位数之和等于奇数指数上的站立位数之和。

EN

回答 1

Stack Overflow用户

发布于 2022-10-22 19:04:35

这里有一个命中即失的生成器,它可以很好地适用于范围内的数字:

代码语言:javascript
运行
复制
import random

def even_odd_places(n):
    evens = []
    odds = []
    for i,d in enumerate(str(n),start = 1):
        if i % 2 == 0:
            evens.append(int(d))
        else:
            odds.append(int(d))
    return evens,odds

def check_condition(n):
    e,o = even_odd_places(n)
    return sum(e) == sum(o)

def rand_nums(a,b,max_tries = 1000):
    tries = 0
    while True:
        tries += 1
        n = random.randint(a,b)
        if check_condition(n):
            tries = 0
            yield n
        else:
            if tries == max_tries:
                return None

例如:

代码语言:javascript
运行
复制
g = rand_nums(10000, 99999)
s = [next(g) for _ in range(10000)]
print(s[:5])
#typical output: [25641, 45980, 38225, 34320, 94380]

要比一种不择手段的方法更好,就需要进行一些非平凡的数学分析。在给定的范围内生成满足目标条件的所有数字是不容易的。

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

https://stackoverflow.com/questions/74165825

复制
相关文章

相似问题

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