0

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

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__`.

想法?

4

3 回答 3

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
于 2013-01-31T22:06:34.123 回答
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

请参阅:Python 中的“返回”

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

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

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

于 2013-01-31T23:16:27.580 回答
0

您不能将 [] 用于函数,它用于列表或字典。

def square(num):
    l= [None] * len(num)
    for i in range(len(num)):
        l[i] = num[i] ** 2
    return l
于 2015-01-24T22:31:49.813 回答