我正在编写一个对列表中的每个元素进行平方的函数。
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__`.
想法?
答案 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