使用python 3.4
ranks = [[0 for y in range(0,len(graph))] for x in range(0,iterSites)]
for site in ranks[0]:
site = 2
print(ranks)
输出:
[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
为什么“site = 2”没有将rank [0]的每个值都设置为2?
答案 0 :(得分:1)
site是一个局部变量,其值不会分配给列表的值。更改代码如下所示:
ranks = [[0 for y in range(0,len(graph))] for x in range(0,iterSites)]
for site in range(len(ranks[0])):
ranks[0][site] = 2
print(ranks)
答案 1 :(得分:1)
因为网站是排名[0] [x]的副本而不是真实值。你需要做的是:
for site in range(len(ranks[0])):
ranks[0][site] = 2
print(ranks)
答案 2 :(得分:0)
首先,当您需要更新site = 2
rank
第二个ranks[0]
是列表而非列表中的单元格,因此您的迭代不正确。
您可以按如下方式更改代码:
ranks = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
for idx, value in enumerate(ranks[0][:]):
ranks[0][idx] = 2
print ranks
<强>输出:强>
[[2, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]