Python 我正试图写一个代码,告诉你该往哪个方向走
挑战: 我的尝试:Python 我正试图写一个代码,告诉你该往哪个方向走,python,python-3.x,list,algorithm,Python,Python 3.x,List,Algorithm,挑战: 我的尝试: array=["NORTH","SOUTH","SOUTH","EAST","WEST","NORTH","WEST"] list=[] for i in range(len(array)): if array[i]=="NORTH": list.append(i) for i
array=["NORTH","SOUTH","SOUTH","EAST","WEST","NORTH","WEST"]
list=[]
for i in range(len(array)):
if array[i]=="NORTH":
list.append(i)
for item in array:
if item == "SOUTH":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="SOUTH":
list.append(i)
for item in array:
if item == "NORTH":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="EAST":
list.append(i)
for item in array:
if item == "WEST":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="WEST":
list.append(i)
for item in array:
if item == "EAST":
list.append(item)
array.remove(item)
break
array.pop(i)
else:
if array[i]!=None:
print(array)
else:
print(list)
问题在于,当我尝试在终端中运行时,它会显示以下错误:
line 5, in <module>
if array[i]=="NORTH":
IndexError: list index out of range
第5行,在
如果数组[i]=“北”:
索引器:列表索引超出范围
如果您能帮助我解决这个问题并帮助我改进代码,那就太好了。与其将结果追加到新列表中,不如更新原始列表。删除值后,代码尝试访问索引时,索引超出范围。当我们需要更新列表时,我们需要使用
枚举
,而不是使用具有列表长度的for循环
以下是我关于挑战的解决方案。这可能不是最佳解决方案,但它通过了所有测试用例:
def dirReduc(arr):
while True:
retry = False
for i, val in enumerate(arr):
if i+1 < len(arr):
if val == "NORTH" and arr[i+1] == "SOUTH":
del arr[i]
del arr[i]
retry = True
break
if val == "SOUTH" and arr[i+1] == "NORTH":
del arr[i]
del arr[i]
retry = True
break
if val == "WEST" and arr[i+1] == "EAST":
del arr[i]
del arr[i]
retry = True
break
if val == "EAST" and arr[i+1] == "WEST":
del arr[i]
del arr[i]
retry = True
break
if retry == False:
break
return arr
def dirreduce(arr):
尽管如此:
重试=错误
对于i,枚举中的val(arr):
如果i+1
说明:
array=["NORTH","SOUTH","SOUTH","EAST","WEST","NORTH","WEST"]
list=[]
for i in range(len(array)):
if array[i]=="NORTH":
list.append(i)
for item in array:
if item == "SOUTH":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="SOUTH":
list.append(i)
for item in array:
if item == "NORTH":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="EAST":
list.append(i)
for item in array:
if item == "WEST":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="WEST":
list.append(i)
for item in array:
if item == "EAST":
list.append(item)
array.remove(item)
break
array.pop(i)
else:
if array[i]!=None:
print(array)
else:
print(list)
我已经遍历了数组中的所有元素。如果我得到了任何可以相互湮灭的连续对,我会从列表中删除它们。这类配对是:(北,南),(南,北),(东,西)和(西,东)
我将继续此操作,直到列表中没有可移动对为止。最后,我返回更新后的列表
参考资料:
array=["NORTH","SOUTH","SOUTH","EAST","WEST","NORTH","WEST"]
list=[]
for i in range(len(array)):
if array[i]=="NORTH":
list.append(i)
for item in array:
if item == "SOUTH":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="SOUTH":
list.append(i)
for item in array:
if item == "NORTH":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="EAST":
list.append(i)
for item in array:
if item == "WEST":
list.append(item)
array.remove(item)
break
array.pop(i)
elif array[i]=="WEST":
list.append(i)
for item in array:
if item == "EAST":
list.append(item)
array.remove(item)
break
array.pop(i)
else:
if array[i]!=None:
print(array)
else:
print(list)
数组的长度
通常是个坏主意。请打印一份文件,告诉您要访问哪个索引或哪个项目。您将看到,您将尝试迭代访问元素n+1的列表,而它只有n个元素。那么我应该怎么做..请更正我很高兴。当你有能力时,接受答案并投票表决。