赞
踩
```python
pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
# 使用 zip(*pairs) 来解包每个元组中的元素,使其成为 lambda 函数的参数
sums = map(lambda x, y: x + len(str(y)), *zip(*pairs))
print(list(sums)) # 输出: [2, 4, 5]
```
这里的 `zip(*pairs)` 将 `pairs` 列表中的元组解包,创建一个新的迭代器,其中包含元组中对应的元素。然后,我们将这个迭代器解包(使用星号 `*`),作为参数传递给 `lambda` 函数。
- `zip(*pairs)` 的效果是将 `pairs` 中的元组转换为一个迭代器,其中包含 `(1, 2, 3)` 和 `('a', 'b', 'c')`。
- `map()` 函数随后将这些序列作为参数传递给 `lambda` 函数,`lambda x, y: x + len(str(y))` 计算每个整数和对应字符的长度之和。
这样,`map()` 函数和 `lambda` 表达式就可以正确地为每个元组生成期望的和了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。