[python] 파이썬에서 빈 목록 만들기

파이썬에서 새로운 빈 목록을 만드는 가장 좋은 방법은 무엇입니까?

l = [] 

또는

l = list()

나는 두 가지 이유 때문에 이것을 묻고 있습니다.

  1. 어느 것이 더 빠른지 기술적 인 이유. (클래스를 만들면 오버 헤드가 발생합니까?)
  2. 코드 가독성-표준 규칙 중 하나입니다.


답변

어떤 코드가 더 빠른지 테스트하는 방법은 다음과 같습니다.

% python -mtimeit  "l=[]"
10000000 loops, best of 3: 0.0711 usec per loop

% python -mtimeit  "l=list()"
1000000 loops, best of 3: 0.297 usec per loop

그러나 실제로이 초기화는 프로그램의 매우 작은 부분 일 가능성이 높으므로이 문제에 대한 걱정이 잘못 될 수 있습니다.

가독성은 매우 주관적입니다. 나는 선호 []하지만 Alex Martelli와 같이 매우 잘 알려진 사람들 은 발음list() 하기 쉽기 때문에 선호합니다 .


답변

list()보다 본질적으로 느린 []있기 때문에,

  1. 기호 조회가 있습니다 (목록을 다른 것으로 정의하지 않은 경우 파이썬이 미리 알 수있는 방법이 없습니다!),

  2. 함수 호출이 있습니다.

  3. 그런 다음 반복 가능한 인수가 전달되었는지 확인해야합니다 (따라서 요소로 목록을 만들 수 있음) ps. 우리의 경우에는 아무것도 없지만 “if”체크가 있습니다

대부분의 경우 속도 차이는 실질적인 차이를 만들지 않습니다.


답변

사용 []합니다.

  1. 목록 표기법이 단락이기 때문에 더 빠릅니다.
  2. 항목이 있는 목록 만들면 목록 만들지 않고 목록을 만들 때와 동일한 모양을 사용해야합니다. 왜 차이가 있습니까?

답변

나는 그것에 대해 실제로 알지 못하지만 경험상 jpcgt가 실제로 옳은 것 같습니다. 다음 예 : 다음 코드를 사용하는 경우

t = [] # implicit instantiation
t = t.append(1)

인터프리터에서 t를 호출하면 목록없이 “t”를 제공하고 다른 것을 추가하면 예를 들어

t = t.append(2)

” ‘NoneType’개체에 ‘append’속성이 없습니다.”오류가 발생합니다. 그러나, 내가 목록을 만들면

t = list() # explicit instantiation

그럼 잘 작동합니다.


답변

@Darkonaut 답변 을 강조 표시 하면 더 잘 보일 것입니다.

new_list = []또는 new_list = list()성능이 무시되는 것이 좋지만 결과를 append()반환 None할 수 없습니다 new_list = new_list.append(something.

나는 그런 반환 유형 결정에 매우 당황합니다. 왝.


답변