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

如何用Python函数式编程从两个列表中匹配对应位置等长字符串

解决方法

你的问题出在lambda的判断条件上——zip返回的每个param是一个包含两个字符串的元组,比如("aaa", "dddd"),你写的len(param) == len(param)其实是在比较元组自身的长度(永远是2),所以会返回所有配对,自然不符合预期。

正确的做法是分别取元组里两个字符串的长度做比较:

list1 = ["aaa", "bb", "c", "wwwww"]
list2 = ["dddd", "xx", "a", "abcd"]

result = list(filter(lambda pair: len(pair[0]) == len(pair[1]), zip(list1, list2)))
print(result)

运行这段代码就能得到你要的[("bb", "xx"), ("c", "a")]。

简单拆解下逻辑:

  • zip(list1, list2):把两个列表对应位置的元素打包成元组,生成迭代器
  • lambda pair: len(pair[0]) == len(pair[1]):接收每个元组,判断两个字符串长度是否相等,返回布尔值
  • filter(...):筛选出lambda返回True的元组
  • list(...):把filter生成的迭代器转换成列表

内容的提问来源于stack exchange,提问作者D-Money

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:15:36