2016-09-30 3 views
2

길이가 다른 배열의 배열이 주어집니다. 당신은 사용 a 내에서 가장 큰리스트의 길이를 찾을 수 있습니다배열 배열에서 배열의 길이를 같음

a = [[1.0, 2.0, 3.0, 4.0],[2.0, 3.0, 1.0],[5.0, 5.0, 5.0, 5.0],[1.0, 1.0]] 


max =0 
for x in a: 
    if len(x) > max: 
     max = len(x) 

print max 
new = [] 
for x in a: 
    if len(x)<max: 
     x.extend([0.0]* (max-len(x))) 
    new.append(x) 

print new 

답변

5

: 다음 코드가 아닌 0으로 짧은 사람들을 작성하여 배열의 길이를 동일시하는 청소기 (짧은) 방법이 있나요 다음 중 하나를

len(max(a, key=len))

또는

max(map(len, a))

,

또한 새 목록 구성하기 위해 지능형리스트를 사용

>>> a = [[1.0, 2.0, 3.0, 4.0], [2.0, 3.0, 1.0], [5.0, 5.0, 5.0, 5.0], [1.0, 1.0]] 
>>> m = len(max(a, key=len)) 
>>> new = [x + [0]*(m - len(x)) for x in a] 
>>> new 
[[1.0, 2.0, 3.0, 4.0], [2.0, 3.0, 1.0, 0], [5.0, 5.0, 5.0, 5.0], [1.0, 1.0, 0, 0]] 
1
In: b = [i+[0.]*(max(map(len,a))-len(i)) for i in a] 

In: b 
Out: 
[[1.0, 2.0, 3.0, 4.0], 
[2.0, 3.0, 1.0, 0.0], 
[5.0, 5.0, 5.0, 5.0], 
[1.0, 1.0, 0.0, 0.0]] 
+3

반복'최대 (지도 (LEN, A)) 모든 배열은 매우 비효율적에 대한'... – deceze

+1

당신이 옳은 것, 때로는 더 나은을 한 - 라이너를 사용하지 마십시오. 그러므로 @eugene y isa의 해법이 더 효과적입니다. –

관련 문제