Я выполнял несколько упражнений Хакерранка и столкнулся с проблемой обмена элементами Мой вопрос касается списков в целом, почему элементы в "arr" не изменяются во втором цикле for, как это происходит в первом цикле for?
def minimumSwaps(arr):
arr = [i-1 for i in arr]
ls = []
minimumSwaps = 0
for i, j in enumerate(arr):
print(arr)
if j == arr[j]:
continue
else:
test = arr[i]
arr[i] = arr[j]
arr[j] = test
minimumSwaps += 1
ls.append(arr[i])
print('\n\n')
for i in range(len(ls)):
print(arr)
if i == arr[i]:
continue
else:
test = arr[i]
arr[i] = arr[arr[i]]
arr[arr[i]] = test
minimumSwaps +=1
return minimumSwaps
minimumSwaps([4,3,1,2])
Выход первого цикла:
[3, 2, 0, 1]
[1, 2, 0, 3]
[1, 0, 2, 3]
[1, 0, 2, 3]
Это то, что я ожидал, но вывод второго контура дает мне это:
[1, 0, 2, 3]
[1, 0, 2, 3] <--- если бы он вел себя так же, как первый цикл, это было бы [0, 1, 2, 3] </p>