首页 > 解决方案 > 改变解包操作符的行为

问题描述

在下文中,我将*称为(拆包)运算符,我不确定它的名称。

一个简单的问题,例如计算元组列表的元素差异,让我想知道是否有一些使用*-operator 的秘密方法。

理想情况下,我只想根据map, 所以不:lambda,列表推导,numpy...

我的想法是尝试int.__sub__(*(3, 4))通过一些 hacky 方式进行扩展:

a = [1, 2, 3]
b = [7, 10, 12]

pairs = zip(a, b)

print(list(map(int.__sub__, pairs)))
# TypeError: descriptor '__sub__' requires a 'int' object but received a 'tuple'

print(list(map(lambda p: int.__sub__(*p), pairs)))
# it works BUT used lambda 

对于这样的问题,我提出了以下问题:

我在文档*中的 -operator 上找到的唯一参考

编辑感谢deceze这里使用的解决方案starmap

import itertools as it

list(it.starmap(int.__sub__, pairs))

标签: pythonargs

解决方案


推荐阅读