You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3中筛选含4奇1偶的整数组合?

问题解决步骤

首先你需要修正生成组合的代码——原来的combinations(range(1,21,5))是错误的:range(1,21,5)会生成[1,6,11,16]仅4个元素,既无法生成5个整数的组合,也覆盖不了1-20的所有数。正确的写法是指定从1-20的范围内选5个数的所有组合:

from itertools import combinations
# 生成1到20中所有5个整数的组合
combos = list(combinations(range(1, 21), 5))

接下来实现“筛选含4个奇数1个偶数的组合”的逻辑,有两种简洁的方式:

方式一:直接统计奇数数量

遍历每个组合,统计其中奇数的个数,当数量为4时就加入目标列表:

odd4_even1 = []
for combo in combos:
    # 用生成器表达式统计奇数个数:x%2 !=0 为奇数,sum会把True转为1、False转为0
    odd_count = sum(x % 2 != 0 for x in combo)
    if odd_count == 4:
        odd4_even1.append(combo)

方式二:利用已有的奇偶列表(需修正列表范围)

你之前的奇偶列表包含了0,而我们的组合是1-20的数,先修正列表生成,再判断元素归属:

# 生成1-20的奇数、偶数列表
odds = [y for y in range(1, 21) if y % 2 != 0]
evens = [y for y in range(1, 21) if y % 2 == 0]

odd4_even1 = []
for combo in combos:
    # 统计组合中属于奇数列表的元素数量
    odd_count = sum(1 for x in combo if x in odds)
    # 5个元素的组合,奇数4个则偶数必然是1个
    if odd_count == 4:
        odd4_even1.append(combo)

两种方式都能实现需求,方式一无需额外维护奇偶列表,代码更简洁;方式二如果后续有其他基于奇偶列表的操作,复用性更强。

内容的提问来源于stack exchange,提问作者Jorge_Espinoza_73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:50:41