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)