我有一个函数可以确定数字是否小于0或者根本没有数字
def numberfunction(s) :
if s == "":
return 0
if s < 0 :
return -1
if s > 0:
return s
我还有一份清单
numbers = [[]]
现在,让我说我用以下数字填充了列表列表:
[[1,2,3,4],[1,1,1,1],[2,2,2,2] ..etc ]
我如何调用上面列出的数字中的函数?
我是否需要一个循环,我在每个列表的每个数字上使用该函数,还是比它更简单?
答案 0 :(得分:6)
您可以使用map
和list comprehension将您的功能应用于所有元素。请注意,我已修改您的示例列表以显示所有返回案例。
def numberfunction(s) :
if s == "":
return 0
if s < 0 :
return -1
if s > 0:
return s
# Define some example input data.
a = [[1,2,3,""],[-1,1,-1,1],[0,-2,-2,2]]
# Apply your function to each element.
b = [map(numberfunction, i) for i in a]
print(b)
# [[1, 2, 3, 0], [-1, 1, -1, 1], [None, -1, -1, 2]]
请注意,对于numberfunction
目前的工作方式,对于等于零的元素,它将返回None
(感谢@thefourtheye指出这一点)。
答案 1 :(得分:4)
您也可以调用嵌套的map()
:
>>> a = [[1,2,3,""],[-1,1,-1,1],[2,-2,-2,2]]
>>> map(lambda i: map(numberfunction, i), a)
[[1, 2, 3, 0], [-1, 1, -1, 1], [2, -1, -1, 2]]
>>>
我有Python&lt; 3,其中map返回列表。
答案 2 :(得分:3)
你可以这样做:
result = [[numberfunction(item) for item in row] for row in numbers]