我试图将函数math.pow
的2次方映射到一个列表,但问题是,我应该传递一个可迭代对象,而不仅仅是一个值。所以,我用这种方式来修复它,通过创建一个长度与我的列表相同的2s列表:
import math
lis = [1,2,3,4]
squred_lis = list(map(math.pow, lis, [2,2,2,2]))
print (squred_lis)
那么,有没有一种方法可以让我只传递一个值并让它作为第二个参数在每次迭代中传递?
我想你要找的是itertools.repeat()
。它将无限地重复该值,并且map()
将迭代尽可能多的值以匹配lis
的长度。
import math
import itertools
lis = [1,2,3,4]
squared_lis = list(map(math.pow, lis, itertools.repeat(2)))
print(squared_lis)
生产:
[1.0, 4.0, 9.0, 16.0]
我想这就是你想要的
squred_lis = list(map(math.pow, lis, [2 for _ in range(len(a))]))
但. .这个怎么样?
squared_list = list(map(lambda x: x ** 2, a))