以下是我的代码,我打算计算一个列表被修改了多少次,但是计数似乎是错误的,我的代码如下所示:
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 的正确计数。在这两种情况中的任何一种情况下,我都会得到 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, 'invalid')。
第一个代码中的计数有什么问题?