我无法理解从中得到的错误。 我在哪里定义了一个元组? 我该如何解决?
Lista应该是一个包含值和键[(key1,value1),(key2,value2),...)
的列表。
sx
和dx
是定义子列表和子列表结尾的整数。
这是程序
def merge(lista,sx,dx):
cx = (sx + dx)/2
i = sx
j = cx + 1
app = []
while (i<=cx and j<=dx):
if lista[i][1]<=lista[j][1]:
app.append(lista[i])
i += 1
else:
app.append(lista[j])
j += 1
while(i<=cx):
app.append(lista[i])
i += 1
while(j<=dx):
app.append(lista[j])
j += 1
for z,k in app,range(sx,dx+1):
lista[k][0] = z[0] #ERROR
lista[k][1] = z[1]
def mergesort(lista, sx = 0, dx = -1):
if dx == -1:
dx = len(lista)
cx = (sx + dx)/2
if(sx<dx):
mergesort(lista,sx,cx)
mergesort(lista,cx+1,dx)
merge(lista,sx,dx)
这是错误消息:
Traceback (most recent call last):
File "occorrenze.py", line 78, in <module>
mergesort(lista)
File "occorrenze.py", line 55, in mergesort
mergesort(lista,sx,cx)
File "occorrenze.py", line 55, in mergesort
mergesort(lista,sx,cx)
File "occorrenze.py", line 55, in mergesort
mergesort(lista,sx,cx)
File "occorrenze.py", line 55, in mergesort
mergesort(lista,sx,cx)
File "occorrenze.py", line 55, in mergesort
mergesort(lista,sx,cx)
File "occorrenze.py", line 55, in mergesort
mergesort(lista,sx,cx)
File "occorrenze.py", line 57, in mergesort
merge(lista,sx,dx)
File "occorrenze.py", line 46, in merge
lista[k][0] = z[0]
TypeError: list indices must be integers, not tuple
编辑:
我认为你想要的是 -
for z in range(sx,dx+1): lista[z] = app[z-sx]
谢谢Anand,你已经解决了我的第一个错误,现在我还有一个错误......
if lista[i][0]<=lista[j][0]:
IndexError: list index out of range
答案 0 :(得分:0)
我认为你想要的是 -
{{1}}
您也可以考虑更改以下行 -
{{1}}
到
{{1}}