Списки - объедините, чтобы получить новый список - PullRequest
0 голосов
/ 10 июля 2020

Python - списки:

Для следующих списков:

list_1=[1,2,3,4,6,7,8,9,11,12,13,14]
list_2=[3,8,1]

Как объединить эти 2 списка для создания:

list_3=[3,0,1,0,0,0,2,0,0,0,0,0]

Обратите внимание, что В списке_1 отсутствует бегун номер 5 и бегун номер 10 - это сделано намеренно.

В этом примере list_1 имеет длину 12. list_1 представляет бегунов в гонке. list_2 представляет, какой бегун занял какую позицию. Итак, бегун 3 занял первое место, бегун 8 занял второе место, а бегун 1 занял третье место. list_3 имеет длину 12 - и если бегун не входит в тройку лидеров, то этот бегун обозначается '0'.

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 10 июля 2020

Вы можете использовать метод .index() и дать вашим спискам / переменным более понятные имена:

runners = [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14]
result  = [3, 8, 1]

# desired output
list_3 = [3, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0]

list3 = []
for runner in runners:
    try:
        list3.append(result.index(runner) + 1)
    except ValueError:
        list3.append(0)
1 голос
/ 10 июля 2020

Перебор list_2

list_3 = [0]*len(list_1)
for i, pos in enumerate(list_2):
    ind = list_1.index(pos)
    list_3[ind] = i + 1
1 голос
/ 10 июля 2020

Используя понимание списка и index():

list_3 = [list_2.index(x)+1 if x in list_2 and list_2.index(x) < 3 else 0 for x in list_1]

или короче, поскольку правило , если бегун не входит в тройку лидеров , неявно задано длиной list_2:

list_3 = [list_2.index(x)+1 if x in list_2 else 0 for x in list_1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...