2017-10-10 19 views
0

は、問題についての記事を通り抜けたが、どれも私は問題を理解したり、問題を解決する助けなかっ:'int'オブジェクトは反復可能ではありませんpython3?

# This is the definition of the square() function 
def square(lst1): 
    lst2 = [] 
    for num in lst1: 
     lst2.append(num**2) 
    return lst2 

n = [4,3,2,1] 

print(list(map(square, n))) 
>>> 
File "test.py", line 5, in square 
    for num in lst1: 
TypeError: 'int' object is not iterable 

square()関数定義でその行の何が問題であり、解決策は何ですか? ありがとう!

+0

[編集]あなたの質問は、コメントでは記入しないでください。 –

+0

今や 'square'は複雑すぎます。 'map'は一度に1つの整数を渡します。あなたは 'def square(n):return n * n'を必要とします –

+0

関数内で' for num in lst1'は必要ありません。この関数は、一度に1つのリスト要素のみを受け取ります。ちょうど 'return lst1 ** 2'をしてください; 1回限りのリストを返すことは通常役に立たない – WillardSolutions

答えて

0

mapあなたのリストの各項目にsquareを適用します。

したがって、squareにループを含めることは冗長です。関数が呼び出されると、lst1はすでに整数です。

のいずれかを実行します。

result = square(n) 

か:

def square(i): 
    return i*i 

result = [i*i for i in n] 

を、後者はと

result = list(map(square,n)) 

よりも高速&優れています

(または)

+0

ありがとう! 私は最初の引数としてカスタム関数を持つ 'map()'の使用に焦点を当てます。私はこの瞬間にもっと派手なものと混じり合いたいとは思わない。 – Yifangt

関連する問題