【发布时间】:2015-10-04 12:49:04
【问题描述】:
我正在尝试在两个嵌套 for 循环内的列表中分配(或替换)项目。以下是代码(base_list 已定义,因此代码可能看起来不完整):
list_init = 'test'
# converting new list to type list
new_list = list(list_init)
flag = [0]
for i in range(len(base_list)):
for j in range(i, len(base_list)):
if base_list[i] == base_list[j]:
print(base_list[j],' is equals to', base_list[i])
# below is the error line
new_list[j] = base_list[j]
flag[j] = 1
else:
print(base_list[j],' is not equals to', base_list[i])
# below is the error line
new_list[j] = base_list[j]
flag[j] = 0
我正在做的是对同一个列表 (base_list) 进行两次迭代,以将列表中的每个元素与该元素之后的其他元素进行比较,每当找到匹配项时,我都会将第一个 base_list 值分配给每个元素的 new_list匹配。当未找到匹配项时,我将当前的 base_list 值原样分配给新列表。因此我将第二个循环作为:
for j in range(i, len(base_list))
这是为了确保第二个循环从第一个循环中活动的列表项开始,而不是从头开始迭代。
现在问题出在下面一行:
new_list[j] = base_list[j]
我收到以下错误:
new_pl[j] = pl_list[i]
IndexError: list assignment index out of range
我在使用标志列表时遇到了同样的问题:
flag[j] = 1
您能否建议使用索引在循环中分配(或替换)列表元素值的任何解决方案?
【问题讨论】: