v = [1, 3, 5, 6, 8, 10]
f = [2, 4, 7, 9, 11, 12]
def new(v,f):
i = 0
j = 0
u=[0]*12
for k in range(12):
if(v[i]<=f[j]):
u[k]+=v[i]
i+=1
elif(f[j]<=v[i]):
u[k]+=f[j]
j+=1
print(u)
new(v, f)
回溯(最近一次呼叫):
文件“C:/Users/Matheus/PycharmProjects/untitled/dsfdsfs.py文件“,第15行,in
new(v, f)
文件“C:/Users/Matheus/PycharmProjects/untitled/dsfdsfs.py文件,第8行,纽约
if(v[i]<=f[j]):
索引器错误:列表索引超出范围
我想不出这个错误的原因
这是因为列表v和f的长度都只有6。 当代码运行时,i的增量超过5,这会导致错误。你知道吗
如果在for循环中添加try/except块,然后打印 i、j和k的值你将看到失败:
当i=5时,执行if语句的第一个分支,i递增为6。在下一个循环中,它尝试比较v[6]和f[j]。这将抛出错误。你知道吗
最好使用while循环,因为您不知道所需的迭代次数。由于python中的列表是可变的,因此使用.append()和.extend()函数将值添加到数组的末尾要容易得多,而不是保留另一个计数器。最后,在while循环的末尾,您可以检查哪个列表已用尽,从而导致循环结束,并将其他列表的其余部分添加到末尾。你知道吗
示例代码:
看起来您正在尝试将两个列表合并为一个排序列表?你知道吗
这会更快:
相关问题 更多 >
编程相关推荐