如何使用Python的map、filter操作列表db和dc生成目标列表dd
问题排查与实现方案
原代码问题分析
- 没有将
db和dc的同位置元素做绑定处理:单独对dc做filter操作,最终得到的只有dc里的三个0值,完全丢失了和db对应位置元素的关联 - 后续map操作实际是对三个
0做平方运算,输出结果自然为[0,0,0],和预期不符
正确实现方案
方案1:使用map+filter实现(匹配你的使用需求)
核心逻辑是先用zip()函数将两个列表按位置配对,再做筛选和运算:
db = [3, 5, 7, 3, 2, 7, 9] dc = [1, 0, 1, 0, 1, 0, 1] dd = list(map(lambda x: x[0] ** 2, filter(lambda pair: pair[1] == 0, zip(db, dc)))) print(dd) # 输出 [25, 9, 49]
方案2:更简洁的列表推导式实现
如果没有强制要求使用map和filter,列表推导式可读性更高:
dd = [b ** 2 for b, c in zip(db, dc) if c == 0]
内容的提问来源于stack exchange,提问作者user16980147
相关产品推荐
相关产品推荐

