python3 yield 每x行取第y行、每x个数字取任意个数字

设有一列表:

字母列表 = [
    "a","b","c","d",
    "a","b","c","d",
    "a","b","c","d",
    "a","b","c","d",
]

需每四个字母,取第一个字母

(1)逻辑原型:

行数 = -1
def 每四行取第一行():
    global 行数
    行数 += 1
    if 行数 % 4 == 0:
        return True
    else:
        return False
新列表 = [i for i in 字母列表 if 每四行取第一行()]
print(新列表)

(2)生成器:

def 每x行取第y行_生成器(x,y):
    行数 = -1 - (y - 1)
    while True:
        行数 += 1
        if 行数 % x == 0:
            yield True
        else:
            yield False

每4行取第1行 = 每x行取第y行_生成器(4,1)
新列表 = [i for i in 字母列表 if next(每4行取第1行)]
print(新列表)

// 注:“每4行取第1行” 这个生成器实例,不要复用,用完即弃

(3)扩展

def 每x行取任意行_生成器(x, *args):
    行数 = -1
    while True:
        行数 += 1
        余数 = 行数 % x
        if (余数+1) in args:
            yield True
        else:
            yield False

每4行取134行 = 每x行取任意行_生成器(4,1,3,4)
新列表 = [i for i in 字母列表 if next(每4行取134行)]
print(新列表)

猜你喜欢

转载自blog.csdn.net/u013595395/article/details/110238599
今日推荐