使用列表上的函数

时间:2014-04-16 09:12:48

标签: python list function

我有一个函数可以确定数字是否小于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 ]

我如何调用上面列出的数字中的函数?

我是否需要一个循环,我在每个列表的每个数字上使用该函数,还是比它更简单?

3 个答案:

答案 0 :(得分:6)

您可以使用maplist 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]