Python 3의 zip () 함수
이 질문에 이미 답변이 있습니다.
저는 zip()
파이썬 3 에서 함수 를 사용하는 방법을 알고 있습니다. 제 질문은 제가 어떤 식 으로든 매우 특이하다고 느끼는 다음 사항에 관한 것입니다.
두 가지 목록을 정의합니다.
lis1 = [0, 1, 2, 3]
lis2 = [4, 5, 6, 7]
그리고 나는 zip()
이것들을 다음과 같은 방법으로 사용합니다.
1. test1 = zip( lis1, lis2)
2. test2 = list(zip(lis1, lis2))
test1
통역사에 입력 하면 다음과 같이 표시됩니다.
"zip object at 0x1007a06c8"
그래서 list(test1)
인터프리터에 입력 하면 의도 한 결과를 얻지 만 list(test1)
다시 입력 하면 빈 목록이 나타납니다.
내가 특이한 점은 test2
인터프리터에 몇 번 입력 해도 항상 의도 한 결과를 얻고 빈 목록이 없다는 것입니다.
Python 2와 달리 zip
Python 3의 함수는 iterator를 반환 합니다 . 반복자는 한 번만 소진 될 수 있습니다 (목록을 만드는 것과 같은 방식으로). 이것의 목적은 한 번에 모든 것을 메모리에 넣는 것이 아니라 필요에 따라 반복기의 요소 만 생성하여 메모리를 절약하는 것입니다. 압축 된 개체를 재사용하려면 두 번째 예제 에서처럼 목록을 만든 다음 다음과 같이 목록을 복제합니다.
test2 = list(zip(lis1,lis2))
zipped_list = test2[:]
zipped_list_2 = list(test2)
zip()
파이썬 3에서 함수는 반복자를 돌려줍니다. 그것이 당신이 인쇄 test1
할 때 당신 이 얻는 이유입니다 - <zip object at 0x1007a06c8>
. 문서에서 -
각 이터 러블에서 요소를 집계하는 이터레이터를 만듭니다.
그러나 일단 당신이-- list(test1)
당신은 반복자를 소진했습니다. 따라서 그 후에는 언제든지 list(test1)
빈 목록이 생성됩니다.
의 경우 test2
이미 목록을 한 번 만들었 test2
으므로 목록이므로 항상 해당 목록이됩니다.
참조 URL : https://stackoverflow.com/questions/31683959/the-zip-function-in-python-3
'programing' 카테고리의 다른 글
println! (0) | 2020.12.30 |
---|---|
Action Bar를 ToolBar로 대체해야합니까? (0) | 2020.12.30 |
Kotlin에서 동시에 확장 및 구현 (0) | 2020.12.30 |
"Variable length lookbehind가 구현되지 않았지만"가변 길이가 아닙니다. (0) | 2020.12.30 |
++ * ptr ++는 C ++에서 정의되지 않은 동작입니까? (0) | 2020.12.30 |