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

如何将含fuzz.ratio的嵌套for循环改写为列表推导式?

嵌套循环转列表推导式解决方案

首先纠正你原代码里的缩进问题——scores.append(score)得缩进在内部for y循环里,不然最后只会把最后一次计算的score加入列表,正确的循环写法是:

scores = []
for x in df1_names:
    for y in df2_names:
        score = fuzz.ratio(x,y)
        scores.append(score)  # 缩进至内部循环内

转一维列表推导式

如果只是要生成所有fuzz.ratio结果的一维列表,直接把计算逻辑放在最前面,循环顺序和原代码一致即可:

scores = [fuzz.ratio(x, y) for x in df1_names for y in df2_names]

转二维矩阵(对应你尝试的嵌套推导式)

如果想生成二维矩阵(每行对应一个x,每列对应一个y),把内层列表推导式里的x替换成fuzz.ratio(x,y)就行,注意循环顺序:

matrix = [[fuzz.ratio(x, y) for y in df2_names] for x in df1_names]

要是你想让外层循环对应y、内层对应x,调整循环顺序即可:

matrix = [[fuzz.ratio(x, y) for x in df1_names] for y in df2_names]

说白了,列表推导式的核心就是**「要生成的元素」 + 「循环条件」**,嵌套推导式就是外层推导式生成每个子列表,子列表里的推导式生成具体元素,把fuzz.ratio(x,y)这个计算结果放到对应位置就搞定了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:45:47