programing

Python에서 빈 목록 만들기

projobs 2022. 9. 15. 23:19
반응형

Python에서 빈 목록 만들기

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

그러나 실제로는 이 초기화가 프로그램의 극히 일부일 가능성이 높기 때문에 이를 걱정하는 것은 잘못된 생각일 수 있습니다.

가독성은 매우 주관적입니다.나는 더 좋다[]하지만 알렉스 마르텔리처럼 매우 박식한 사람들은list()발음할 수 있으니까

list()본질적으로 보다 느리다[],왜냐면

  1. 심볼 룩업이 있습니다(목록을 다른 것으로 재정의하지 않았다면 python은 사전에 알 수 없습니다).

  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).

언급URL : https://stackoverflow.com/questions/2972212/creating-an-empty-list-in-python

반응형