내가 자리를 비운 동안 Python (3.4) 내장 함수에 이상한 일이 발생했습니다. map
및 zip
과 같은 함수는 객체 (목록 또는 튜플이 아님)를 반환합니다. Python 3.x 내장 함수 이제 유형 반환
In [34]: map(lambda x:1, [1,2,3])
Out[34]: <map at 0x7fe27a15dac8>
- 다음은 파이썬에 추가되었습니다?
- 왜 추가 되었습니까?
- 가장 중요한 것은 내 코드가 깨지겠습니까?
내가 자리를 비운 동안 Python (3.4) 내장 함수에 이상한 일이 발생했습니다. map
및 zip
과 같은 함수는 객체 (목록 또는 튜플이 아님)를 반환합니다. Python 3.x 내장 함수 이제 유형 반환
In [34]: map(lambda x:1, [1,2,3])
Out[34]: <map at 0x7fe27a15dac8>
짧은 답변 :이 요소의 제한된 번호가 필요한 경우 전체 목록을 할당 방지하기 위해 사용 반복 가능 객체가 있습니다. 이후 3.0
나는 게으른 함수 호출 (또는 coroutines) 같아요.
lazy 함수 호출은 필요한 경우에만 개체를 계산하는 개체를 반환합니다.
예를 들어 1M
항목의 목록이 있지만지도의 첫 번째 3
만 있으면됩니다. 그런 다음 이터레이터는 처음 세 개만 계산할 것입니다.
무한한 목록에 대한 작업을 수행하는데도 사용할 수 있습니다. 모든 소수의 목록이 있다고 가정 해보십시오. 이것은 반복자입니다. 물론 모두 소수를 저장할 수 없습니다. 그것이 정말로 필요한 경우에만 다음 계산을 수행합니다.
documentation을 기반으로 할 때, 3.0에서 말하겠습니까?
>>> list(map(lambda x:1, [1,2,3]))
[1, 1, 1]
예 무한 목록 : 하기 위해
당신의 반복자에 모든 항목을 내고 목록으로 변환, 당신은 list
기능을 사용할 수 있습니다.
예를 들어 이전 목록 [1,2,3]
을 사용한다고 가정 해보십시오. 이제 모든 계산을 직접하는 대신 전체 길이가 k
이되도록 주어진 목록을 반복하는 목록이 필요합니다. 예를 들어 마지막 요소가 무엇인지 결정할 수 있습니다.) :
>>> from itertools import *
>>> list(islice(cycle([1,2,3]),20))
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2]
즉, 무한 반복기 [1,2,3,1,2,3, ...]를 통해 작업을 수행 할 수 있습니다. 이러한 반복기에서 list
을 수행하지 않으면 메모리 부족 예외가 발생합니다.documentation에 도시 된 바와 같이
, 또한 n
번째 요소 취할 수
def nth(iterable, n, default=None):
"Returns the nth item or a default value"
return next(islice(iterable, n, None), default)
하고 따라서 예를 들어 무한 피보나치 시퀀스의 요소 1337
조차인지 확인 :
def fibbonacci():
i = 0
j = 1
while True :
yield j
k = j
j = i+j
i = k
nth(fibbonacci(),1337)
1887894200332450578485872635131438888682034332759626203734370221207918536632734791920258721345445695603925109666619483005485820744328669636758022665585261815175601673908370933079008727762461226800205778071936133115682958306317629552911384353679816770236462076654822205794785629944
즉, 각 요소를 계산할 수있는 시퀀스를 정의 할 수 있으며 첫 번째 n
, k
번째, ... 목록에 명시 적으로 모든 값을 명시 적으로 저장하지 않아도됩니다.
'map'은 함수가 아닙니다. 사실,'type (map) == map'은'builtin_function_or_method'가 아닙니다. – PythonNut
@PythonNut : 그렇다면 파이썬 내장 함수에 왜 나열되어 있습니까? https://docs.python.org/3.2/library/functions.html#map –
이것이 파이썬 3.2의 문서일까요? 나는 모른다. [3.4 docs] (https://docs.python.org/3.4/library/functions.html#map)에 함수로 나열되어 있습니다. 하지만 분명히 기능이 아닙니다 ... 내가 바보가 아니고 유형이 지금 기능이 아니라면 말입니다. – PythonNut
3.x 라인이 시작된 이래로 2008 년으로 돌아 왔습니다. 잠시 동안 빠져 있어야합니다. – user2357112
관련 항목 : http://stackoverflow.com/questions/22147757/iterators-in-python-3 – user2357112
주로 대화 형으로 사용하기위한 문제입니다. 대부분의 2.x 코드는 원활하게 작동하며 대화식 인터프리터에서만 알 수 있습니다. – dawg