每次迭代只产生一次

don*_*pj2 5 python generator

我正在尝试使用生成器进行类型转换,但是一旦成功生成值,我想转移到迭代器中的下一个元素.在表达式成功的情况下,我当前的尝试将产生多个值:

def type_convert(data):
    for item in data:
        try:
            yield int(item)
        except (ValueError, TypeError) as WrongTypeError:
            pass
        try:
            yield float(item)
        except (ValueError, TypeError) as WrongTypeError:
            pass
        yield item
Run Code Online (Sandbox Code Playgroud)

这是如何完成的?

mgi*_*son 4

您应该能够continue像其他循环一样进行此循环:

try:
    yield int(item)
    continue
except (ValueError, TypeError) as WrongTypeError:
    pass
Run Code Online (Sandbox Code Playgroud)

附带说明一下,我一直认为continue这个控制结构的名字很奇怪......

而且,这是您更正后的代码:

def type_convert(data):
    for item in data:
        try:
            yield int(item)
            continue
        except (ValueError, TypeError) as WrongTypeError:
            pass
        try:
            yield float(item)
            continue
        except (ValueError, TypeError) as WrongTypeError:
            pass
        yield item


for a in type_convert(['a','1','1.0']):
    print (a)
Run Code Online (Sandbox Code Playgroud)