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

如何将嵌套循环计数逻辑转换为Python单行循环?

把嵌套循环计数改成Python单行的方法

嘿,这事儿简单!要将你那段嵌套循环的计数逻辑压缩成Python单行,列表推导式+生成器表达式就是完美的解决方案,完全和你原来的逻辑等价,还更简洁。

先拆解下你原来的逻辑:遍历外层可迭代对象的每个元素,对内层可迭代对象的元素做条件判断,统计符合条件的数量,再把每个统计结果存入counts列表。

对应的单行写法模板是这样的:

counts = [sum(1 for inner_item in inner_iterable if condition) for outer_item in outer_iterable]

举个实际例子更清楚

假设你原来的代码是统计每个子列表里的偶数个数:

counts = []
for sublist in [[1,2,3], [4,5,6], [7,8,9]]:
    count = 0
    for num in sublist:
        if num % 2 == 0:
            count += 1
    counts.append(count)

改成单行就是:

counts = [sum(1 for num in sublist if num % 2 == 0) for sublist in [[1,2,3], [4,5,6], [7,8,9]]]

运行后counts的值是[1, 2, 2],和原来的代码结果完全一致。

为什么这么写?

  • 内层的sum(1 for inner_item in inner_iterable if condition):每遇到一个符合条件的元素就生成一个1,用sum把这些1加起来,本质就是统计符合条件的元素数量,比手动初始化count再累加要更Pythonic。
  • 外层的列表推导式:负责遍历外层的每个元素,把对应的内层统计结果依次收集到counts列表里。

如果你的条件判断逻辑比较复杂,还可以把它抽成单独的函数,让代码更易读:

def is_even(num):
    return num % 2 == 0

counts = [sum(1 for num in sublist if is_even(num)) for sublist in [[1,2,3], [4,5,6], [7,8,9]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:43:45