2017-06-28 24 views
1

私はこのリストを持っています:l = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 、16,17,18,19,20]と私は一度に5つの要素を印刷するには、このコードを作ったこれまでのところpython 2.7リストのリスト印刷サブセットを反復する

0: [1,2,3,4] 
1: [2,3,4,5] 
2: [3,4,5,6] 
... 
n: [17,18,19,20] 

のようなものを印刷し、それを反復処理したいと思いますが、最後の反復プリント3 :

for index, item in enumerate(l): 
    if index == 0 or index == 1 or index == 2: 
     continue 
    print index, l[index - 3:index + 2] 

どうすればこの問題を解決できますか?

+0

私はより簡単な方法を提案すればよいですか?それとも、既存のロジックでそれを行う方法を見つけたいですか? –

+0

あなたはより簡単な方法を教えてください。 :) – Pat

+0

簡単な方法はすでに解答に記載されています。ロジックは、「すべてのインデックスに対して、 'index'から 'index + sub_len'にリストを印刷し、length_of_list - sub_lenに達するまで印刷します。だから私は5要素を印刷するたびに、sub_lenは5になります。 –

答えて

3

あなたはあなたのリストのスライスと正しい軌道に乗っています。ここではそれを容易にするために微調整です:

sub_lenはあなたが印刷スライスの所望の長さである
sub_len = 4 
for i in range(len(mylist) - sub_len + 1): 
    print l[i:i + sub_len] 

demo