以下は私のコードです。リストが変更された回数を計算するつもりですが、カウントが間違っているようです。私のコードを以下に示します。
t=(0,999999,"state")
cachLine = []
for x in range(0,2):
cachLine.append(t);
cache = []
for x in range(0,1):
cache.append(cachLine)
cacheList = []
for x in range(0,8):
cacheList.append(cache)
count=0
for cacheI,cache in enumerate(cacheList):
for clI,cl in enumerate(cache):
for bI,(valid, address, state) in enumerate(cl):
if state =='state':
cacheList[cacheI][clI][bI] = (valid, address,'invalid')
count +=1
print(count)
この場合、カウントは 2 ですが、これは予想どおりではありません。16 になるはずです。
ただし、 count+=1 の順序を変更すると
for cacheI,cache in enumerate(cacheList):
for clI,cl in enumerate(cache):
for bI,(valid, address, state) in enumerate(cl):
count +=1
if state =='state':
cacheList[cacheI][clI][bI] = (valid, address,'invalid')
print(count)
16 という正しいカウントを取得します。2 つのケースのいずれでも、cacheList の出力を取得します。
[[[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]], [[(0, 999999, 'invalid'), (0, 999999, 'invalid')]]]
これは 16 個のタプル (0、999999、「無効」) です。
最初のコードのカウントの何が問題になっていますか?