2013-02-04 35 views
3

我有一长串需要作为整数传递到函数中的刺。我在做什么现在的问题是:解压缩列表并同时投射

my_function(int(list[0]), int(list[1]), int(list[2]), int(list[3])...) 

但我知道我可以通过拆包列表中进行更短的函数调用:

my_function(*list) 

我在想,如果有办法int()铸造相结合的方式与清单拆包*,这样的事情:

my_function(*int(list)) #Doesn't work 
+0

你的最后一行非常接近tho' - 你只需要在列表“int”中列出所有的值,这就是@Thorsten中出现的“map”的位置。 – sotapme

回答

8

使用内置方法map,例如,

my_function(*map(int, list)) 

或者,尝试列表理解:

my_function(*[int(x) for x in list]) 

BTW:

请不要使用list作为名称的局部变量,这将隐藏内置方法list

为变量名称附加下划线是常见用法,否则会隐藏内置方法/与关键字冲突。

+0

非常好。不知道这个,谢谢! – BloonsTowerDefence

+1

这是Python中的好东西之一。当你了解它时,你会说“哇”,当你不得不回到没有这些功能的语言时,你会说“#@ + *%&”。所以要为此做好准备。 –

0

映射是答案:

map(int, my_list) 
相关问题