首页 > 解决方案 > python迭代器中的布尔值

问题描述

我正在运行一个非常冗长的脚本,这将起作用:

    # sample line 
    line =  '....,,,,.,..,.,.,.4GCCG.,..,,,.,.,,.2TG'

    # search for numbers in line
    numbers = re.search(["[0-9]", line)

    if numbers is not None:
       numbers = re.finditer("[0-9]", line)
       some_process_on_each(numbers)

但是在每行中搜索两次数字效率不高。

有没有办法将获得的 callable_iteratorre.finditer("[0-9]", line)与某物进行比较以获得布尔值(也许我可以知道内存空间?)所以我可以执行以下操作:

    # sample line 
    line =  '....,,,,.,..,.,.,.4GCCG.,..,,,.,.,,.2TG'

    # search for numbers in line
    numbers = re.finditer(["[0-9]", line)

    if numbers is ??:
        some_process_on_each(numbers)

谢谢

标签: pythoniteratorboolean

解决方案


只是尝试迭代。

import re
line =  '....,,,,.,..,.,.,.4GCCG.,..,,,.,.,,.2TG'
for n in re.finditer("[0-9]", line):
    print(line[slice(*n.span())])
#4
#2

如果没有数字,则没有可迭代的内容。


推荐阅读