2010-01-09 2 views
6

나는 특정리스트 내에서 유지되는 모든리스트의 길이를 얻는 방법을 찾고있다. 예를 들어 :파이썬은 서브리스트에서리스트 길이를 찾는다.

a = [] 
a.append([]) 
a[0].append([1,2,3,4,5]) 
a[0].append([1,2,3,4]) 
a[0].append([1,2,3]) 

나는 다음과 같은 명령을 실행하고 싶습니다 :

len(a[0][:]) 

하는 출력 길이 [5,4,3]의 목록입니다 내가 원하는 대답을 할 것이다. 그 명령은 분명히 작동하지 않으며, 내가 시도한 몇 가지 다른 것들도하지 않습니다. 도와주세요!

+0

작동 다음 작동하지 않습니다 매튜의 대답은 가능한 그 것이다 보통 "오래된 학교"방법을 사용하여 [0] 안에있는 목록에도 목록이 포함되어 있습니까? – danben

답변

17

[len(x) for x in a[0]]?

>>> a = [] 
>>> a.append([]) 
>>> a[0].append([1,2,3,4,5]) 
>>> a[0].append([1,2,3,4]) 
>>> a[0].append([1,2,3]) 
>>> [len(x) for x in a[0]] 
[5, 4, 3] 
+1

a [0]의 크기에 따라지도를 사용하여 Matthew Iselin의 솔루션을 선택할 수 있습니다. 일부 경우 (람다가 필요하지 않은 경우)지도가 약간 빨라질 수 있습니다. 하지만 그건 아주 큰 [0] – sberry

3
[len(x) for x in a[0]] 
3

이이 List comprehension로 알려져있다 (자세한 정보와 설명은 클릭).

[len(l) for l in a[0]] 
8

map(len, a[0])

2
def lens(listoflists): 
    return [len(x) for x in listoflists] 

지금, 단지 대신 lens(a[0])를 호출하여 len(a[0][:]) (당신이 할 수있는, 당신이 주장하는 경우, 그 중복 [:] 추가 할 수 있지만 그건 그냥 아무런 목적을 위해 사본을하고있어 원하는 - 낭비가 없으면 부족이 없다;-).

1

t=[] 
for item in a[0]: 
    t.append(len(item)) 
print t 
0

파이썬 3의 하나가 모두 파이썬이 파이썬 3

list(map(len, a[0]))