Python-如果满足条件,则获取列表的子列表

时间:2018-12-04 18:49:57

标签: python arrays list

我有一些在不同功能中用于项目的对象列表,但首先必须解析它们以确保使用正确的对象。我在下面的函数中执行此操作。目前,我正在使用的是条件检查,因为根据列表中对象的位置,它们可能处于不同的结构中。我很好奇是否仍然可以合并parse()函数,并且仅在仍然满足条件语句的情况下才在子列表中进行搜索。

items = [A,[B,C,D]]

def parse(type):
    if type == 0:
        # returns A
        return items[0]
    elif type == 1:
        # returns B, C, or D
        return items[1][random.randint(0,2)]

像这样...

items = [A,[B,C,D]]

def parse(type):
    return items[type] if type == 1: [random.randint(0,2)]

3 个答案:

答案 0 :(得分:1)

items = [A, [B, C, D]]

def parse(items, index):
    item = items[index]
    if type(item) is not type(list()):
        return item
    else
        return item[random.randint(0, len(item))]

答案 1 :(得分:0)

您不需要elif。您要先检查一种情况,然后再做另一种完全不同的事情,即使不是那种情况也是如此。

items = [A,[B,C,D]]

def parse(type):
    if type == 0:
    # returns A
        return items[0]
    # returns B, C, or D
    return items[1][random.randint(0,2)]

我假设这就是合并的意思

答案 2 :(得分:0)

您还应该显式传递items而不是将其用作全局变量。使用index而不是type,因为它是内置的(@Wyrmwood表示)

def parse(items, index):
    if isinstance(items[index], list):
        return random.choice(items[index])
    else:
        return items[index]