如何在列表中复用所有整数? - 蟒蛇

use*_*085 1 python multiplication

list1= [1,2,3,4] 
Run Code Online (Sandbox Code Playgroud)

1)我想将此列表中的每个元素相乘以输出24.如何在不使用for循环的情况下在python中执行此操作?是否有内置库来执行此操作?

2)如果list1包含诸如的字符串

list1= ["1,2,3,4"]
Run Code Online (Sandbox Code Playgroud)

3)如果list1包含诸如的字符串

list1 = ['1234']
Run Code Online (Sandbox Code Playgroud)

roo*_*oot 10

您还可以使用:

import operator
reduce(operator.mul, [1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

出:

24
Run Code Online (Sandbox Code Playgroud)

至于性能,使用operator.mul速度有点快:

In [1]: from operator import mul

In [2]: lst = [1,2,3,4]

In [3]: reduce(mul,lst)
Out[3]: 24

In [4]: %timeit reduce(mul,lst)
1000000 loops, best of 3: 733 ns per loop

In [5]: %timeit reduce(lambda x,y:x*y,lst)
1000000 loops, best of 3: 1.28 us per loop
Run Code Online (Sandbox Code Playgroud)

如果您将数字作为字符串:

In [6]: reduce(mul,map(int,["1,2,3,4"][0].split(',')))
Out[6]: 24
Run Code Online (Sandbox Code Playgroud)

对于大型列表,您还可以使用itertools.imap它返回迭代器:

In [7]: from itertools import imap

In [8]: %timeit reduce(mul,imap(int,["1,2,3,4"][0].split(',')*10000))
1 loops, best of 3: 264 ms per loop
Run Code Online (Sandbox Code Playgroud)

编辑: 希望你上次编辑:

In [18]: reduce(mul,map(int,['1234'][0]))
Out[18]: 24
Run Code Online (Sandbox Code Playgroud)