Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以在map()函数中使用range()吗?_Python_List_Map - Fatal编程技术网

Python 我可以在map()函数中使用range()吗?

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是

我正在测试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
是您的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