python3はすべてのx行がy番目の行を取り、すべてのx番号が任意の数を取ります

リストがあります:

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

 

4文字ごとに、最初の文字を取ります

 

 

(1)論理プロトタイプ:

数= -1 def 4行ごとに最初の行を取得します():
    グローバル行番号
    行番号+ = 1 
    if行番号%4 == 0:
        return True 
    else:
        return False 
new list =(i for i in letter 4行ごとに最初の行を取る場合のリスト())
印刷(新しいリスト)

 

 

(2)ジェネレーター:

def各xのy番目の行を取りますline_generator(x、y):
    行数= -1-(y-1)
    while True:
        行数+ = 1
        行数の場合%x == 0:
            yield True 
        else:
            収量

False4行ごとに1行目を取得= x行ごとにy行目を取得line_generator(4,1)
new list = [i for i in letter list if next(4行ごとに最初の行を取得)] 
print(new list)

//注:「4行ごとに最初の行をフェッチする」このジェネレーターの例では、再利用せず、使い切ったら破棄します

 

 

(3)拡張

def各xに任意の行を取りますline_generator(x、* args):
    行数= -1 
    while True:
        行数
        + = 1剰余=行数%x 
        if(remainder + 1)in args:
            yield True 
        else:
            生成

False4行あたり134行を取る= xあたり任意の行を取るrow_generator(4,1,3,4)
新しいリスト= [次の場合は文字リストのifor i(4行あたり134行を取る)] 
print(new List)

 

おすすめ

転載: blog.csdn.net/u013595395/article/details/110238599