Python学習編32回目です。
東京大学のPython学習ページで学んでいます。今回は6-1. 内包表記(2周目)
今回はChatGPTはお休み…といいつつエラーの原因を聞くのには使った。
入力:
def sum_matrix(list1, list2):
return [list1[i][j]+list2[i][j] for i,j in range(len(list1))]
を実行したら
TypeError: cannot unpack non-iterable int object
のエラーが出ました。エラーの原因を教えてください。
出力:
このエラーメッセージ「TypeError: cannot unpack non-iterable int object」は、range(len(list1))
から返される各要素が整数であるため、これを2つの変数i
とj
にアンパック(展開)しようとした時に発生します。range
関数は整数のシーケンスを生成しますが、このコードのコンテキストでは、2次元配列(リストのリスト)の各要素にアクセスしようとしているため、このアプローチは機能しません。
修正するためには、2つのネストされたループを使用して、外側のループでリストの各行にアクセスし、内側のループで各行の要素にアクセスする必要があります。
iとjに同時にrangeつけてi×jの繰り返しをするのはダメで、1回ずつrangeかけなさいってことか。間違ってる理由を過ごしえてくれると試しやすくていいね。
次回に続く