我是Python中的新手學生(以及一般編程)。Python「列表分配索引超出範圍」
我應該做一個python程序,用它打開兩個帶有隨機數字的文件,並創建一個新的文件,其編號從低到高排序。
所以我做了這個迭代使用兩個for循環遍歷所有數字的代碼,搜索最低的,非常基本的東西,比存儲數字和它的位置,附加到一個Lmix列表,將被保存在最終文件並存儲號碼位置以從該列表中刪除它,以便它不會再被找到。
變量是葡萄牙語,但我在評論中翻譯了他們,其餘都是不言自明的。
arq1 = open("nums1.txt","r")
arq2 = open("nums2.txt","r")
arqmix = open("numsord.txt","w")
L1 = arq1.readlines()
L2 = arq2.readlines()
Lmix = []
L1 = list(map(int,L1)) # converts lists into int
L2 = list(map(int,L2))
cont = 0
menor = L1[0] # "Menor" is the variable that stores the lowest number it finds
menorpos = 0 # "Menorpos" is the position of that variable in the list, so it can delete later
listdec = 0 # "listdec" just stores which list the number was from to delete.
while cont != (len(L1)+len(L2)):
# while loops that finds the lowest number, stores the number and position, appends to the Lmix and deletes from the list so it won't be found on next iteration
n = 0
for n,x in enumarate(L1):
m = 0
for m,y in enumarate(L2):
if x<menor:
menor = x
menorpos = n
listdec = 0
elif y<menor:
menor = y
menorpos = m
listdec = 1
m += 1
n += 1
Lmix.append(menor)
if listdec == 0:
del L1[menorpos]
elif listdec == 1:
del L2[menorpos]
cont += 1
for x in Lmix:
arqmix.write("%d\n"%x)
arq1.close()
arq2.close()
arqmix.close()
但每次我運行它,出現此錯誤:
回溯(最近通話最後一個): 文件 「C:/Users/Danzmann-Notebook/PycharmProjects/untitled/aula18.py」第41行,在 德爾L2 [menorpos] IndexError:列表分配索引超出範圍
我知道這意味着什麼,但我只是不明白爲什麼會發生,我怎麼能解決這個問題。
任何幫助,將不勝感激。
在此先感謝,對於任何語法錯誤感到抱歉,英語不是我的母語。
你爲什麼明確增加for循環中的'm'和'n'?這已經爲你完成了。 –