如何使用函数将列表相乘?

use*_*437 2 python list multiplying

如何使用函数在python中将列表相乘?这就是我所拥有的:

    list = [1, 2, 3, 4]
    def list_multiplication(list, value):
         mylist = []
         for item in list:
              for place in value:
               mylist.append(item*value)
    return mylist
Run Code Online (Sandbox Code Playgroud)

所以我想用它来乘以列表*列表(1*1,2*2,3*3,4*4)

所以输出将是1,4,9和16.我如何在python中执行此操作,其中第二个列表可以是任何内容?谢谢

Vee*_*rac 9

我最喜欢的方法是将mul运算符映射到两个列表:

from operator import mul

mul(2, 5)
#>>> 10

mul(3, 6)
#>>> 18

map(mul, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10])
#>>> <map object at 0x7fc424916f50>
Run Code Online (Sandbox Code Playgroud)

map至少在Python 3中,返回一个生成器.因此,如果您想要一个列表,您应该将其转换为一个:

list(map(mul, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10]))
#>>> [6, 14, 24, 36, 50]
Run Code Online (Sandbox Code Playgroud)

但到那时,对zip'd列表使用列表理解可能更有意义.

[a*b for a, b in zip([1, 2, 3, 4, 5], [6, 7, 8, 9, 10])]
#>>> [6, 14, 24, 36, 50]
Run Code Online (Sandbox Code Playgroud)

为了解释最后一个,zip([a,b,c], [x,y,z])给出(生成的生成器)[(a,x),(b,y),(c,z)].

for a, b in"解包"每(m,n)对入变量ab,和a*b它们相乘.