Python> = 3.5 대안 : 목록 리터럴로 압축 풀기 [*newdict]
Python 3.5에는 새로운 압축 풀기 일반화 (PEP 448) 가 도입되어 이제 쉽게 수행 할 수 있습니다.
>>> newdict = {1:0, 2:0, 3:0}
>>> [*newdict]
[1, 2, 3]
압축 풀기 *
작업 은 반복 가능한 모든 객체 에서 작동 하며, 반복시 사전이 키를 반환하므로 목록 리터럴 내에서 목록을 사용하여 쉽게 목록을 만들 수 있습니다.
추가 .keys()
즉 것은 [*newdict.keys()]
당신에게 기능 룩업과 호출 비용을 부담해야하지만 의도의 좀 더 명시 적으로 제작에 도움이 될 수 있습니다. (모든 정직에서 실제로 걱정 해야 할 것은 아닙니다 ).
*iterable
구문은 수행과 유사 list(iterable)
과 그 동작은 처음에 기록 된 통화 섹션 파이썬 참조 설명서의. PEP 448을 사용하면 *iterable
나타날 수 있는 위치에 대한 제한 이 완화되어 목록, 설정 및 튜플 리터럴에 배치 할 수있게되었으며 Expression list 의 참조 설명서 도 업데이트되었습니다.
list(newdict)
함수 호출이 실제로 수행되지 않기 때문에 (적어도 작은 사전의 경우) 더 빠르다는 차이점과 동일하지만 :
%timeit [*newdict]
1000000 loops, best of 3: 249 ns per loop
%timeit list(newdict)
1000000 loops, best of 3: 508 ns per loop
%timeit [k for k in newdict]
1000000 loops, best of 3: 574 ns per loop
더 큰 사전을 사용하면 속도는 거의 동일합니다 (큰 컬렉션을 반복하는 오버 헤드는 함수 호출의 작은 비용보다 우선합니다).
비슷한 방식으로 튜플과 사전 키 세트를 만들 수 있습니다.
>>> *newdict,
(1, 2, 3)
>>> {*newdict}
{1, 2, 3}
튜플 케이스에서 후행 쉼표를 조심하십시오!