#python #arraylist
Вопрос:
array1 - [40, 30, 20, 10]
array2 -[40, 30, 40, 20, 40, 10, 30, 40, 30, 20, 30, 10, 20, 40, 20, 30, 20, 10, 10, 40, 10, 30, 10, 20]
Я хочу выполнить array2
итерацию array1
в следующем порядке индексов:
array2{0}(40)
->> array2{1}(30)
->> array2{0}(40)
->> array2{1}(30)
а затем перейдите к: array2{2}(40)->...
повторяйте то же самое, пока не дойдете до конца array2
. И пока это происходит, он просматривает каждый элемент array1
и ищет любые не похожие значения ( 20
10
здесь), это сохраняется в новом массиве.
Здесь {}
[]
.
Комментарии:
1. Привет @Colt_Rigs, почему вы повторяете первые два элемента массива два раза — array2{0}(40)->array2{1}(30), а затем снова array2{0}(40)->>array2{1}(30). Как вы сравниваете, чтобы получить сходство между этими двумя массивами.
Ответ №1:
Если я правильно понял, вы хотите выполнить итерацию по массивам, по два (пары), каждый раз сравнивая пару из массива 1 с парой из массива 2, чтобы определить, считается ли это разницей, и в этом случае вы вернете все разные пары в конце.
(Я использовал itertools
рецепт, доступный в его официальной документации или в more_itertools
библиотеке)
Это мое предложение :
from itertools import zip_longest
from more_itertools import grouper
def compare_arrays(a, b):
differences = []
# we start by grouping each list by twos, and zipping them together
for pair_a, pair_b in zip_longest(grouper(a, 2), grouper(b, 2)):
# print(pair_a, "|", pair_b)
if pair_a is None or pair_b is None:
break # if the lists have not the same length, it does not count as a difference
elif pair_a != pair_b:
differences.extend(pair_a)
return differences
array1 = [40, 30, 20, 10]
array2 = [40, 30, 40, 20, 40, 10, 30, 40, 30, 20, 30, 10, 20, 40, 20, 30, 20, 10, 10, 40, 10, 30, 10, 20]
print(compare_arrays(array1, array2))
# [20, 10]
array1 = [20, 20, 30, 40, 50, 50, 60, 70]
array2 = [20, 20, 30, 00, 50, 00]
print(compare_arrays(array1, array2))
# [30, 40, 50, 50]