设有一列表:
字母列表 = [ "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(新列表)