2012-04-18 3 views
0

목록이 있습니다. 내가 지능형리스트 &를 사용하려면 목록 이해를 사용하여 목록 작업

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

는 다음과 같이 출력을 만들고 싶었 : 나는 출력 1 만들 수 있습니다

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) 

및 루프에 사용 출력 2 그러나 나는 내가위한 지능형리스트를 사용하는 방법에 대해 그런 생각을 가지고 있겠지 같은.

아무도이 사실을 알고 있다면 친절하게 알려주세요.

미리 감사드립니다.

+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) 

: 23,516,

+1

다른 버전을 사용하면 가장 좋습니다. – self

4

여기에 귀하의 첫 번째 문제를 해결하는 JF Sebastians's grouperzip(repeat('value'), a)

+4

Downvoter : 왜? – Marcin

+2

나는 그 적절한 대답을 모른다. 나는 왜 어떤 사람들은 그냥 downvotes 이유를주지 말아요 – sam

+3

나는 두 번째를 사랑 :) :) – mshsayem