initialize - python list to array




arr.__ len__()은 파이썬에서 배열의 길이를 얻는 가장 좋은 방법입니까? (5)

len (arr)을 사용하면됩니다.

>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1

Python 에서 요소의 수를 얻는 유일한 방법은 다음과 같습니다.

arr.__len__()

그렇다면 왜 이상한 구문입니까?


목록, 사전, 튜플, 문자열 등 이해할 수있는 길이를 취하는 방법은 len 을 호출하는 것입니다.

l = [1,2,3,4]
s = 'abcde'
len(l) #returns 4
len(s) #returns 5

"이상한"구문의 이유는 내부적으로 파이썬이 len(object)object.__len__() 로 변환한다는 것입니다. 이것은 모든 객체에 적용됩니다. 따라서 어떤 클래스를 정의하고 길이를 갖는 것이 합리적 __len__() 메소드를 정의한 다음 해당 인스턴스에서 len 을 호출 할 수 있습니다.


파이썬 객체의 길이를 얻는 가장 좋은 방법은 그것을 len 함수의 인수로 전달하는 것입니다. 내부적으로, 파이썬은 전달 된 객체의 특별한 __len__ 메소드를 호출하려고합니다.


파이썬은 오리 타이핑을 사용합니다 : 오브젝트 무엇인지 신경 쓰지 않습니다. 적절한 상황에 적합한 인터페이스를 가지고 있어야합니다. 객체에 대해 내장 함수 len ()을 호출하면 실제로 내부 __len__ 메소드가 호출됩니다. 사용자 정의 객체는이 인터페이스를 구현할 수 있으며 len ()은 객체가 개념적으로 시퀀스가 ​​아닌 경우에도 대답을 반환합니다.

전체 인터페이스 목록을 보려면 http://docs.python.org/reference/datamodel.html#basic-customization


my_list = [1,2,3,4,5]
len(my_list)
# 5

튜플에 대해서도 똑같이 작동합니다.

my_tuple = (1,2,3,4,5)
len(my_tuple)
# 5

문자열은 실제로 문자 배열입니다.

my_string = 'hello world'
len(my_string)
# 11

의도적으로이 방법으로 목록, 튜플 및 기타 컨테이너 유형을 명시 적으로 public .length() 메소드를 구현할 필요가 .length() . 대신 'magic' __len__() 을 구현하는 항목의 len() 을 확인할 수 있습니다. __len__() 방법.

물론 이것은 중복 된 것처럼 보일 수 있지만 길이 확인 구현은 동일한 언어 내에서도 상당히 다를 수 있습니다. 하나의 컬렉션 유형이 .length() 메소드를 사용하는 반면 다른 유형은 .length 속성을 사용하는 반면, 다른 컬렉션 유형은 .length() 사용하는 경우는 드문 일이 아닙니다. 언어 수준 키워드를 사용하면 이러한 모든 유형의 진입 점을 통합 할 수 있습니다. 따라서 엘리먼트 목록으로 간주되지 않는 객체조차도 길이 검사를 할 수 있습니다. 여기에는 문자열, 대기열, 나무 등이 포함됩니다.

len() 의 기능적 특성은 프로그래밍의 기능적 스타일에도 도움이됩니다.

lengths = map(len, list_of_containers)






methods