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

はリストではないので、Pythonはメソッドでアイテムをsquare要求しようとしますが、それも存在しません。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の「Return」を参照してください。

それを行う別の方法(ワンライナーリスト内包表記を使用):

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 に答える