programing

Python 3의 zip () 함수

nasanasas 2020. 12. 30. 08:15
반응형

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와 달리 zipPython 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

반응형