例は 2 つあり、最初の例は次のとおりです。
このとき、a=[3,4,5,6,7]2つ目は以下の通りです。 リーリー
初心者の方、アドバイスをお願いします!
ここで 2 つの問題が発生しました: 1 つ目は、上で述べたように、a[0] の値を変更していますが、変更された i放入列表去处理, 或者说, 你漏了把i を質問内のコードに書き込んでいません: 正しい方法:
i
2 番目の質問は、上記で質問したものですが、a=[[0,0]]*5 の定義メソッドがすべて a=[[ 7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]a=[[0,0]]*5这种定义方法, 结果出来发现全部都是a=[[7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]这个问题和第一个问题有个相同之处, 就是你应该是忘了写a[i][0] = i + 3,其次就是: 如果用[[0, 0]] * 5この質問には最初の質問と共通点が 1 つあります。 a[i][0] = i + 3 を書き忘れました。
a=[[0,0]]*5
a=[[ 7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]
a=[[7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]
a[i][0] = i + 3
[[0, 0]] * 5
リーリー id值看到, 他们都是一样的地址, 所以列表中的5个对象, 全是同一个, 所以当你执行a[i][0]= i+3合格できる場合、どれだけ多くの要素を変更しても、最終的には同じリストを変更するだけです!
id
a[i][0]= i+3
i変数を使って反復する必要があるため、常に0を変更すると、当然a[0]が上書きされ、それが最後の値になります最初のコードでは、a=[3,4を取得できません,5, 6,7]、i 変数を使用する必要があります
2番目のコード:
コードを間違って書いたようです。おそらくこの質問をしたいのでしょう
プリントアウトできます
@Lin_R が正しいです
実際、2 番目の方法は個別ではなく共有されます。これは、この時点ではリストであり変数であるのに対し、最初のメソッドは数値であり不変であるためです。
ここで 2 つの問題が発生しました:
リーリー1 つ目は、上で述べたように、a[0] の値を変更していますが、変更された
i
放入列表去处理, 或者说, 你漏了把i
を質問内のコードに書き込んでいません:正しい方法:
2 番目の質問は、上記で質問したものですが、
2 番目のステップは、a=[[0,0]]*5
の定義メソッドがすべてa=[[ 7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]
a=[[0,0]]*5
这种定义方法, 结果出来发现全部都是a=[[7, 0], [7, 0], [7, 0], [7, 0], [7, 0]]
这个问题和第一个问题有个相同之处, 就是你应该是忘了写
a[i][0] = i + 3
,其次就是: 如果用
[[0, 0]] * 5
この質問には最初の質問と共通点が 1 つあります。a[i][0] = i + 3
を書き忘れました。[[0, 0]] * 5
リストを使用して生成された場合です。 、その中のすべては参照であり、5 つのオブジェクトではなく、すべて同じオブジェクトです。例を参照してください:リーリー
そのため、必要な効果を試したい場合は、そのメソッドを使用してリストをすばやく生成することはできません。次のメソッドのみを使用できます:🎜 リーリーid
值看到, 他们都是一样的地址, 所以列表中的5个对象, 全是同一个, 所以当你执行a[i][0]= i+3
合格できる場合、どれだけ多くの要素を変更しても、最終的には同じリストを変更するだけです!
i変数を使って反復する必要があるため、常に0を変更すると、当然a[0]が上書きされ、それが最後の値になります
リーリー最初のコードでは、a=[3,4を取得できません,5, 6,7]、i 変数を使用する必要があります
2番目のコード:
リーリーコードを間違って書いたようです。おそらくこの質問をしたいのでしょう
リーリープリントアウトできます
リーリー@Lin_R が正しいです
実際、2 番目の方法は個別ではなく共有されます。これは、この時点ではリストであり変数であるのに対し、最初のメソッドは数値であり不変であるためです。