Передача нескольких списков через функцию - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы использовать 3 списка в качестве аргументов функции. Может быть, вся моя логика неверна в этом, но я пытаюсь использовать два списка для создания итераторов для анализа третьего списка. Порядок важен, поэтому первый элемент первого и второго списка будет содержать первый и последний индексы и т. Д.

Мой код дает только первый подсписок, когда, конечно, я хотел бы иметь их все.

A=[1, 3, 4, 6]
B=[3, 8, 5, 8]
C=['A', 'B','C', 'D', 'E', 'A', 'B', 'A', 'D']

def newlists(entirelist, initiating, terminating):
    for initindex in initiating:
        for termindex in terminating:

        parsed_list = entirelist[initindex:termindex]

        return parsed_list



all_sublists = newlists(C, A, B)

Мне нужен следующий вывод или что-то подобное для получения подсписков:

all_sublists = [['B','C'],['D','E', 'A', 'B', 'A'],['E'],['B','A']]

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Решение без понимания списка и необычной функции почтового индекса:

def newlists(entirelist, initiating, terminating):
    return map(lambda i, j: entirelist[i:j], initiating, terminating)

print(list(newlists(C,A,B)))
# => [['B', 'C'], ['D', 'E', 'A', 'B', 'A'], ['E'], ['B', 'A']]
0 голосов
/ 01 ноября 2018

Вы можете использовать понимание, чтобы получить то, что вы хотите:

A=[1, 3, 4, 6]
B=[3, 8, 5, 8]
C=['A', 'B','C', 'D', 'E', 'A', 'B', 'A', 'D']

def newlists(entirelist, initiating, terminating):
    return [entirelist[i:j] for i, j in zip(initiating, terminating)]

print(newlists(C, A, B))
#[['B', 'C'], ['D', 'E', 'A', 'B', 'A'], ['E'], ['B', 'A']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...