Python 我可以在map()函数中使用range()吗?
我正在测试map()函数以了解它,但遇到了一个问题。我只是想把Python 我可以在map()函数中使用range()吗?,python,list,map,Python,List,Map,我正在测试map()函数以了解它,但遇到了一个问题。我只是想把numbers中0到2之间的所有数字乘以3: numbers = [1,2,3,4] test = map(lambda x: x * 3 for x in range(3), numbers) print test 我可能遗漏了一些明显的东西,是什么?谢谢 应该是: test = map(lambda x:x*3, numbers) 问题是,map有两个参数——要映射的函数和要映射的iterable。在本例中,lambda是
numbers
中0到2之间的所有数字乘以3:
numbers = [1,2,3,4]
test = map(lambda x: x * 3 for x in range(3), numbers)
print test
我可能遗漏了一些明显的东西,是什么?谢谢 应该是:
test = map(lambda x:x*3, numbers)
问题是,map有两个参数——要映射的函数和要映射的iterable。在本例中,lambda是您的函数,numbers
是您的iterable。请注意,在Python中,您通常会对列表执行[x*3对于x的数字]
,或者对生成器(lazy eval)执行(x*3对于x的数字)
,它应该是:
test = map(lambda x:x*3, numbers)
问题是,map有两个参数——要映射的函数和要映射的iterable。在本例中,lambda是您的函数,numbers
是您的iterable。请注意,在Python中,您通常会对列表执行[x*3对于x中的数字]
,或者对生成器执行(x*3对于x中的数字)
(lazy eval)map()
执行理解操作-无需再添加其他内容(事实上,您已经看到了,您不能这样做)
正确的语法是:
map(lambda x: x * 3, numbers)
这相当于:
[x * 3 for x in numbers]
map()
正确的语法是:
map(lambda x: x * 3, numbers)
这相当于:
[x * 3 for x in numbers]
您混合了两种不同的方法:
使用列表理解
[x*3 for x in range(3)]
map(lambda x:x*3, range(3))
使用map和lambda表达式
[x*3 for x in range(3)]
map(lambda x:x*3, range(3))
您混合了两种不同的方法:
使用列表理解
[x*3 for x in range(3)]
map(lambda x:x*3, range(3))
使用map和lambda表达式
[x*3 for x in range(3)]
map(lambda x:x*3, range(3))
请不要将lambdas与map()
-使用列表理解!它更具可读性,并且避免了函数调用被偷听,我会记住这一点。实际上,我在这里的另一个问题中看到lambda以这种方式使用,询问是否使用list comps或map()。这让我陷入了两难境地:)请不要将lambdas与map()
-使用列表理解!它更具可读性,并且避免了函数调用被偷听,我会记住这一点。实际上,我在这里的另一个问题中看到lambda以这种方式使用,询问是否使用list comps或map()。这让我陷入了两难境地:)谢谢,但我如何使用range()
函数只将某些数字乘以3?@Amon range()函数不是这样的for@Amon哦,我想你应该检查一下号码是否在范围(3)
内。你可以做[x*3如果x在范围内(3)]
我明白了,我应该不使用map()吗?@Amon如果你想使用map,你可以使用map
和filter
的组合,比如:map(lambda x:x*3,filter(lambda x:0Thanks,但是我如何使用范围()
函数仅将某些数字乘以3?@Amon range()函数不是这样的for@Amon哦,我想你应该检查数字是否在范围(3)
。你可以做[x*3代表x,如果x在范围(3)]
我明白了,我应该不使用map()吗那么呢?@Amon如果你想使用map,你可以结合使用map
和filter
,比如:map(lambda x:x*3,filter(lambda x:0