在Python中传递函数中的列表

时间:2018-02-04 10:06:49

标签: python list function

我想创建一个接收列表的函数,检查它的每个元素并返回一个新列表。如果元素大于97,则它将在新列表中放置100。否则,它将为数字添加三个并将其放入新列表中。在函数我只是通过列表。但是,当我运行它时,它不会返回任何东西。

以下是我将列表发送到函数的方法:

res=bonus(mark)

这是我的功能:

def bonus(mark):
    new=[]
    for i in range(1,31):
        if (mark[i-1]>97):
            new.append(100)
        else:
            new.append(mark[i-1]+3)
    return new

2 个答案:

答案 0 :(得分:0)

您需要在调用之前声明该函数。

例如:

mark = [1,97,3,4,98,6,99,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]

def bonus(mark):
    new=[]
    for i in range(1,31):
        if (mark[i-1]>97):
            new.append(100)
        else:
            new.append(mark[i-1]+3)
    return new

res=bonus(mark)

print(res)

输出:

[4, 100, 6, 7, 100, 9, 100, 11, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3]

答案 1 :(得分:0)

如果您浏览列表,请不要使用range(..)使用for item in listname:

def bonus(mark):
    new=[]
    for item in mark:  # item will be each element of mark in order, no need to indexaccess
        if (item > 97):
            new.append(100)
        else:
            new.append(item + 3)
    return new

或者将其缩短为列表理解:

mark = list(range(80,100))

def bonus(m):
    return [min(100,m+3) for m in mark] # add m+3, if > 100 (for 98,99,100) use 100.

print (mark)
print (bonus(mark))

输出:

[80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
[83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100, 100]