【问题标题】:Passing multiple lists through a function通过函数传递多个列表
【发布时间】:2018-11-01 09:15:17
【问题描述】:

我想使用 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']]

【问题讨论】:

  • 我认为您首先需要在函数开头定义parsed_list = [],然后使用parsed_list.append(entirelist[initindex:termindex]) 而不是parsed_list = entirelist[initindex:termindex]

标签: python python-2.7 list function


【解决方案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']]

【讨论】:

    【解决方案2】:

    没有列表理解和花哨的 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']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2018-05-08
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多