2014-12-27 1 views
-4
>>> a = [1, 2, [3, 4], 5] 
>>> print(len(a)) 
4 

목록의 길이는 4이고, 요소 수는 4이고 5가 아닌 이유는 무엇입니까?또한 목록을 포함하는 목록이있는 요소의 수를 계산하십시오.

+0

@nbro 의미가 필요하지 않습니다. – meda

+0

@meda'mean'? 누구? 농담하는 걸 들어 본 적 없니? 나는 항상 농담을하고 있습니다. – nbro

+0

새로운 것들을 배우면서 우리 모두는 이렇게 생각합니다. –

답변

5

외측리스트의 요소 수가 4 a[2] 하나의 오브젝트이다. 한 개체가 목록이기도 한 것은 중요하지 않습니다. 당신이 요소 반복적으로의 수를 계산해야하는 경우

, 다음 자신 그렇게 :

def recursive_element_count(ob): 
    if isinstance(ob, list): 
     return sum(recursive_element_count(elem) for elem in ob) 
    # anything that isn't a list counts as one element 
    return 1 

데모 : 하나의 객체로 가정 내부 목록으로

>>> def recursive_element_count(ob): 
...  if isinstance(ob, list): 
...   return sum(recursive_element_count(elem) for elem in ob) 
...  return 1 
... 
>>> a = [1, 2, [3, 4], 5] 
>>> recursive_element_count(a) 
5 
+1

@MartijnPieters 왜 마지막에'return 1'을 추가할까요? –

+0

@AvinashRaj : 각 비 목록 요소는 1 개의 항목으로 계산되기 때문입니다. –

1

len 4를 반환 . 체크 객체의 유형에 사용

>>> a = [1, 2, [3, 4], 5] 
>>> sum(len(i) if isinstance(i,list) else 1 for i in a) 
5 

isinstance() 기능 : 모든 요소의 길이를 계산하기 위해 다음과 같은 코드를 사용할 수 있습니다.

+0

다른 레벨의 중첩이 있으면이 대답은 작동하지 않습니다. –

+0

@MartijnPieters 예, 분명히, 우리는 다른 레버를위한 재귀 함수로 그것을 할 수 있습니다. – Kasramvd

1

수학에서 집합을 아십니까? 파이썬에서는리스트와 튜플 세트 등에서 비슷합니다. 튜플 등의리스트 나 튜플에리스트가있는 경우 등, 그것들은 하나의 요소입니다.

a=[1,2,3] 
b=[2,3] 
a.append(b) 
print (a) 
print (len(a)) 

출력 :

>>> 
[1, 2, 3, [2, 3]] 
4 
>>> 

한게 때문에 LEN (a) = 4. [2,3]은 list(a)의 요소입니다.