【发布时间】:2015-04-29 08:34:21
【问题描述】:
这是我目前的代码:
num = 0
sav = [["Name: ", "Josh", "Score", "1"], ["Name", "James", "Score: ", "2"], ["Name: ", "Josh", "Score: ", "2"]]
sav2 = [[]*5 for _ in range(len(sav)]
name2 = sav[num][1]
for i, j in enumerate(sav2):
if name2 not in j:
sav2.append(sav[num])
num = num+1
print('hi')
else:
print('hello')
num = num+1
print(sav2)
理想情况下,只要名称不存在,每个名称和分数都会进入sav2。但是,当我运行它时,我得到一个错误 - sav2.append(sav[num]) 中的列表索引超出范围。 (注意 - "hi" 和 "hello" 只是为了确保我的 if/else 语句正常工作(确实如此)。)
最终结果:
sav2 = [["Name: ", "Josh","Score: ", "1"], ["Name: ", "James", "Score: ", "2"]]
【问题讨论】:
-
附加到您正在迭代的列表不是最好的主意。
-
num是什么,你在做什么以及为什么 -
有什么想法可以做得更好吗?
-
num只是增加索引在列表中的距离 -
但是...你为什么不直接使用 i....你有
for i, j in enumerate(sav2)
标签: python python-3.x for-loop multidimensional-array enumerate