python,我想在for循环中使用函数

时间:2019-10-21 07:05:24

标签: python function loops for-loop

我想在循环中使用sub_code_stop(在列表中)

sub_change = [[0, '150', 'aaa'], [0, '151', 'ccc'],
              [0, '152', 'bbb'], [0, '152', 'ddd']]


def sub_code_stop(a):
    for cc in sub_change:
        if a == cc[1]:
            return cc[2]
        else:
            return 0


lis = [['150', '151'], ['152', '153']]
for i in lis:
    print(sub_code_stop(i[0]))

返回是

aaa
0

我想要

aaa
bbb

2 个答案:

答案 0 :(得分:4)

将功能更改为:

def sub_code_stop(a):
    for cc in sub_change:
        if a == cc[1]:
            return cc[2]

    return 0

您之前的代码仅与sub_change的第一个元素进行比较。


如果sub_change中每个子列表的第二个元素都是唯一的,则可以执行以下操作:

sub_change = [[0, '150', 'aaa'], [0, '151', 'ccc'],
              [0, '152', 'bbb'], [0, '153', 'ddd']]
sub_dict = {b:c for _,b,c in sub_change}
lis = [['150', '151'], ['152', '153']]
for i in lis:
    print(sub_dict.get(i[0],0))

答案 1 :(得分:2)

在当前代码中,如果第一个元素不匹配,则在else部分保留带有return的函数。您必须继续循环以测试下一个元素。

如果找到某些内容,则返回适当的值。如果找不到任何内容,则必须在循环结束后再处理。

def sub_code_stop(a):
    for cc in sub_change:
        if a == cc[1]:
            return cc[2]
    return 0