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

如何对可变长度列表的同索引元素进行对应运算并完成条件判断?

修正同索引元素运算的锁匙匹配函数

原代码的核心问题

  • 嵌套for循环会遍历两个列表的所有元素组合,而非同索引位置的元素配对,完全违背需求逻辑。
  • 只要任意一对跨索引元素的运算结果超过阈值就返回False,和“逐一检查同索引元素”的要求不符。

修正方案

基础版(要求两个列表长度一致)

使用zip()函数实现同索引元素的配对遍历,同时增加长度一致性检查:

def lock_and_key(key_cuts, lock_pinning, minimum):
    # 若两个列表长度不一致,直接返回False(可根据需求调整此逻辑)
    if len(key_cuts) != len(lock_pinning):
        return False
    # 遍历同索引元素对
    for v1, v2 in zip(key_cuts, lock_pinning):
        current_result = abs(v1 + v2 - 6)
        if current_result > minimum:
            return False
    # 所有元素对均满足条件时返回True
    return True

# 测试示例
if lock_and_key([2.1, 3.5, 2.7], [4.1, 2.5, 3.2], 0.25):
    print('Unlocked.')
else:
    print('Still locked.')

进阶版(支持长度不一致的列表)

如果需要处理两个列表长度不同的场景,可使用itertools.zip_longest,为短列表的空缺部分指定填充值(示例中用0,可根据实际需求修改):

from itertools import zip_longest

def lock_and_key(key_cuts, lock_pinning, minimum):
    # 遍历所有索引,短列表空缺部分用0填充
    for v1, v2 in zip_longest(key_cuts, lock_pinning, fillvalue=0):
        current_result = abs(v1 + v2 - 6)
        if current_result > minimum:
            return False
    return True

关键说明

  • zip()会自动将两个列表同索引的元素打包成元组,遍历过程中严格按位置配对,完美解决“列表长度不固定”的遍历问题。
  • 若业务要求两个列表长度必须一致,保留长度检查即可;若允许长度不同,使用zip_longest并配置合适的填充值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:05:55