Python为什么获取列表索引超出范围错误?
我正在将一个变量设置为列表的第I个元素,但即使在第一次迭代中也会出现超出范围的错误Python为什么获取列表索引超出范围错误?,python,list,Python,List,我正在将一个变量设置为列表的第I个元素,但即使在第一次迭代中也会出现超出范围的错误 # code the max() function def maxinlist(yourlist): first = 0 second = 0 duplicatelist = yourlist for i in range(0, len(yourlist) - 1): first = yourlist[i] for j in range(len
# code the max() function
def maxinlist(yourlist):
first = 0
second = 0
duplicatelist = yourlist
for i in range(0, len(yourlist) - 1):
first = yourlist[i]
for j in range(len(yourlist) - 1, 0, -1):
second = yourlist[j]
if second > first:
duplicatelist.pop(i)
elif first > second:
duplicatelist.pop(j)
print(duplicatelist[0])
mylist = [1, 4, 8, 2, 5, 100, 44, 2, 5]
maxinlist(mylist)
更改
duplicatelist
更改以下内容
duplicatelist = yourlist
到
在python中,变量名是指针。它们不反映实际的内存空间,如C或C++。
duplicateList=yourList
这里两个指针指向相同的内存空间。改变一个变量也会影响另一个变量
duplicatelist = yourlist.copy()
这也将为duplicateList创建一个新的内存空间。您需要
duplicateList=yourlist.copy()
;否则,您的duplicatelist
更改将反映在yourlist
中。或者:duplicatelist=list(yourlist)
duplicatelist = yourlist.copy()