0

好きなリストを作成し、aa=[ [] for i in range(10)]各要素の割り当てが必要です!

これを行うには2つの方法を使用しますが、1つのメトンは機能し、別のメトンは機能しません.理由はわかりません.

教えてください!ありがとう!

aa=[ [] for i in range(10)]

方法 1: 思うように動作しない。

for a in aa:a=[2]   it get the result [[], [], [], [], [], [], [], [], [], []]

方法 2: 思い通りに動作します。

for i in range(len(aa)): aa[i]=[2]

それは結果を得る

[[2], [2], [2], [2], [2], [2], [2], [2], [2], [2]]

私は別のテストを行います:

for index,a in enumerate(aa): print aa[index] is `a`

結果はすべて真です。

aとは同じだと思いますaa[i]が、答えが見つかりません。

4

2 に答える 2

1

ここに:

for a in aa:
  a = [2]

実際のリストに割り当てているのではなく、リストを反復処理するために createdaaというローカル変数に割り当てているだけです。a変数aは以前は内部の位置を指していましたが、変数の値を変更してaa割り当て[2]ましたが、まったく変更aaされませんでした。それがうまくいかない理由です。一方、ここでは:

for i in range(len(aa)):
    aa[i] = [2]

実際には 内の位置を変更しているためaa、その位置に値[2]が割り当てられaa[i]ます。

于 2013-04-19T16:05:26.537 に答える