如何在Python 3中减去嵌套列表中的元素?

时间:2018-04-30 07:50:11

标签: python python-3.x

我有一个嵌套列表(子列表只有2个元素),如下所示:

list_1 = [[1,2],[3,2]]

我想减去每个嵌套列表中的元素,这应该是输出:

[-1,1]

为了对嵌套列表中的数字求和,我只需要使用:

list_1 = [[1,2],[3,2]]
store = []
for x in list_1:
    store.append(sum(x))

但是在减去因为我不能在互联网上减去任何像'sum'这样的功能,我尝试创建一个这样的:

list_1 = [[1,2],[3,2]]
store = []
def subtraction(z,l):
    total = z - l
    return total
for y in list_1:
    store.append(subtraction(y))

但它又回来了:

TypeError: subtraction() missing 1 required positional argument: 'l'

如何克服此错误并使我的代码正常工作?

4 个答案:

答案 0 :(得分:3)

您可以使用扩展的Iterable Unpacking 运算符。

list_1 = [[1,2],[3,2]]
store = []
def subtraction(z,l):
    total = z - l
    return total
for y in list_1:
    store.append(subtraction(*y))

另一种方法是使用list comprehension

list = [a-b for a, b in list]

答案 1 :(得分:2)

您可以使用列表理解

来实现此目的
store = [ l1-l2 for l1, l2 in list_1]

答案 2 :(得分:1)

我的方式是:

list_1 = [[1,2],[3,2]]
store = []
for a, b in list_1:
    store.append(a - b)

答案 3 :(得分:0)

您可以结合使用maplambda

list(map(lambda x: x[0] - x[1], list_1))

<强>演示

>>> list_1 = [[1,2],[3,2]]
>>> list(map(lambda x: x[0] - x[1], list_1))
[-1, 1]