我有一些在不同功能中用于项目的对象列表,但首先必须解析它们以确保使用正确的对象。我在下面的函数中执行此操作。目前,我正在使用的是条件检查,因为根据列表中对象的位置,它们可能处于不同的结构中。我很好奇是否仍然可以合并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)]
答案 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]