2012-04-18 6 views
0

私はリストを持っています。私はリスト内包&を使用したい リストの理解を使用したリスト操作

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 

はそのまま出力を作成したい:私はOUTPUT1作成することができます

output1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]] 

output2: 
('value', 1) 
('value', 2) 
' 
' 
('value', 20) 

とforループを使用してOUTPUT2が、私は私はリストの内包表記を使用することができますどのようにアイデアを持っていけません同じ。

これを知っている人は、私に教えてください。

ありがとうございます。

+3

は、なぜあなたはリストの内包が必要なのでしょうか? 'for'ループを投稿してください。 –

+3

output2:出力は何ですか?それはリストですか? –

+2

@Karoly Horvath output2がoutput1より下にあり、タプルペアが – Levon

答えて

4
output1 = [a[i:i+4] for i in xrange(0,len(a),4)] 
output2 = [('value',i) for i in a] 
8

まずについて、あなたは簡単に読むことができ秒間

>>> [a[i:i+4] for i in range(0,len(a),4)] 
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]] 

ような何かを行うことができますし、itertoolsを使用して最初の項目

>>> [('value',i) for i in a] 
[('value', 1), ('value', 2), ('value', 3), ('value', 4), ('value', 5), ('value', 6), ('value', 7), ('value', 8), ('value', 9), ('value', 10), ('value', 11), ('value', 12), ('value', 13), ('value', 14), ('value', 15), ('value', 16), ('value', 17), ('value', 18), ('value', 19), ('value', 20)] 

別のバージョンとしてvalueを持つタプルを生成します.izip_longest上記はより可愛いですが

list(itertools.izip_longest([],a,fillvalue='value')) 
01あなたの第二のために

from itertools import izip_longest, repeat 
izip_longest(*[iter(a)]*4, fillvalue=None) 

+1

あなたが使った別のバージョンは、私の視点からは最高です。 – self

4

ここにあなたの最初の問題を解決した、JF Sebastians's grouperzip(repeat('value'), a)

+4

Downvoter:なぜですか? – Marcin

+2

私は知っているが、その適切な答え。私はなぜいくつかの人々がdownvotes理由を与えない理由を知っていない – sam

+3

私は2番目の1つを愛して:) :) – mshsayem

関連する問題