简单定义函数Python 27

时间:2013-01-31 22:03:05

标签: python function python-2.7

我正在编写一个对列表中的每个元素进行平方的函数。

def square(num):
    for i in range(len(num)):
        square[i] = square[i] ** 2

def action():
    nums = [2, 3, 4]
    print square(nums)


action() 

它返回错误:

    square[i] = square[i] ** 2
TypeError: 'function' object has no attribute `__getitem__`.

想法?

3 个答案:

答案 0 :(得分:1)

square函数中,您将该函数称为列表:

def square(num):
    for i in range(len(num)):
        square[i] = square[i] ** 2

由于square不是列表,因此Python尝试使用i方法向其询问项目__getitem__,但这也不存在。

也许您打算使用num代替?

def square(num):
    for i in range(len(num)):
        num[i] = num[i] ** 2

答案 1 :(得分:0)

以Martijn的回答为基础:

def square(seq):
    for index in range(len(seq)):
        seq[index] = seq[index] ** 2
    return seq # this gives the output of the function

请参阅:'Return' in Python

另一种方法(使用单行列表理解):

def square(seq): return [x**2 for x in seq]

有关列表推导,请参阅:Python List Comprehensions

答案 2 :(得分:0)

你不能使用[]作为函数,它不能用于列表或字典。

def square(num):
    l= [None] * len(num)
    for i in range(len(num)):
        l[i] = num[i] ** 2
    return l