проверка эквивалентности порядка и значений в списке python

#python-3.x #database #list #format

#python-3.x #База данных #Список #формат

Вопрос:

Какой была бы функция, в которой, если 2 числа находятся в одном и том же порядке в списке, она распечатает порядок этого числа и само число. Таким образом, in list_1 и list_2 21 — это 3-е значение в обоих этих списках, поэтому результаты: number:24 order:3

 list_1 =[27, 20, 22, 21, 17, 12, 24, 23, 19, 14, 11, 26, 25, 13, 15, 21, 18, 28, 29, 10]
list_2 = [14, 25, 26, 21, 22, 17, 11, 23, 27, 18, 24, 28, 12, 29, 16, 19, 13, 10, 20, 15]
 

Комментарии:

1. Проблема решена? Если да, пожалуйста, отметьте любой из ответов как принятый.

Ответ №1:

Вы можете повторять их вместе:

 for i, j in zip(enumerate(list_1), enumerate(list_2)):
    if i == j:
        print("number:{} order:{}".format(i[1], i[0]))
 

Ответ №2:

@selcuk egese, не могли бы вы сначала выполнить следующие шаги: и посмотреть, сможете ли вы просто разобраться в этом — путем зацикливания и поиска первого соответствия?

 lst1_map = {i: x for i, x in enumerate(list_1)}
print(lst1_map)


lst2_map = {i: x for i, x in enumerate(list_2)}

print(lst2_map)
 

Ответ №3:

Для этого можно использовать функцию zip и создать подобный объект:

 [(list_1[0], list_2[0]), (list_1[1], list_2[1]), etc]
 

Затем вы можете выполнить итерацию по этому объекту и проверить, равны ли все элементы в каждом кортеже. Что-то вроде:

  for index, ziped in enumerate(zip(list_1, list_2)):
     if ziped[0] == ziped[1]:
         print(f"number: {ziped[0]} order {index}")
 

функция enumerate() предназначена только для извлечения порядка.