问题描述
这是我的代码
def wave(arr):
for indx,el in enumerate(arr):
if indx != 0 and indx%2 == 0:
if el[indx] < el[indx-1]:
arr[indx-1],arr[indx]= arr[indx],arr[indx-1]
if el[indx] < el[indx+1]:
arr[indx],arr[indx+1]= arr[indx+1],arr[indx]
return arr
li = [3,5,12,3]
print(wave(li))
我在这里使用的逻辑是将偶数元素与其侧元素进行比较并相应地交换。
解决方法
如果您检查 el
变量的类型,您可以看到它是一个整数 (<class 'int'>
)。所以你尝试这样做:int[int]
。这是无意义的,在 Python 中是不可能的。
你可以检查一下:
def wave(arr):
for indx,el in enumerate(arr):
print(type(el)) # <class 'int'>
....
我试图找出你的期望(你没有在你的问题中写下你的期望),我已经写了一个带有几条注释的工作代码。
代码:
def wave(arr):
for indx,el in enumerate(arr):
# If the index is not zero AND the element is even AND element is not the last one
if indx != 0 and indx % 2 == 0 and indx != len(arr) - 1:
if arr[indx] < arr[indx - 1]: # If the left side is greater
arr[indx - 1],arr[indx] = arr[indx],arr[indx - 1]
if arr[indx] < arr[indx + 1]: # If the right side is greater
arr[indx],arr[indx + 1] = arr[indx + 1],arr[indx]
return arr
li = [3,5,12,3]
print(wave(li)) # expected: [3,3]
li = [3,15,3,8]
print(wave(li)) # expected: [3,8]
输出:
>>> python3 test.py
[3,3]
[3,8]