通过一个函数传递多个列表

时间:2018-11-01 09:15:17

标签: python python-2.7 list function

我想使用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 :(得分:1)

您可以使用理解来获得想要的东西:

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']]

答案 1 :(得分:0)

没有列表理解和花哨的zip功能的解决方案:

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']]