python의 맵은 무엇입니까?

12290 단어 Python

결론


만약 메모리의 대량 처리를 하지 않는다면, 고급 함수로서 존재하는 것은 의미가 있다.
기본적
x, y = map(int, ["1", "2"])
농담하다
x, y = [int(one) for one in ["1", "2"]]
이렇게 개작되면 포함 표시로 대체할 수 있다.

이거 뭐야?


업무상 3년 정도의python을 사용해도 맵을 사용할 줄은 몰랐다.
맵의 장점(단점)을 모르기 때문에 맵에 대해 여러 가지 조사를 했습니다.

내가 유일하게 사용하는 맵


한동안 경기 프로그램 설계를 했을 때(3개월 정도지만)
1 2
상기 입력 값에 대해 x=1, y=2로 받아들일 때
x, y = map(int, input().split())
정도.
이거 잘 보시면input().split()
x, y = map(int, ["1", "2"])
말과 같이 하고 싶은 일을 알 것 같다.
그런데 왜 그런지 모르니까 잘 조사하고 이해해야 돼.

python의 맵은 무엇입니까?


공식 문서 참조
map(function, iterable, ...)
iterable의 모든 요소에 function을 적용하는 균형기를 되돌려주고 결과를 되돌려줍니다.추가된iterable 파라미터를 건네주면function는 그 수량의 파라미터만 가져와야 하며, 모든 추출기에서 병행적으로 얻은 요소에 적용됩니다.만약 여러 개의 추출기를 주면, 이 균형기는 그 중 가장 짧은 추출기가 다 떨어졌을 때 멈출 것이다.함수의 입력이 매개 변수 모듈에 설정되어 있으면 itertools입니다.starmap()을 참조하십시오.
글쎄, 그건 나도 잘 이해하지만, 잘 이해하고 싶어.
  • iterator
  • iterable
  • 조사해봐.

    iterator


    공식 문서를 보고[^2]
    iterator
    (균형기)는 데이터 흐름의 대상을 나타낸다.삽입 함수next()와 균형기__next__() 방법을 반복적으로 호출하거나 흐르는 요소를 하나씩 되돌려줍니다.데이터가 없으면 StopIteration을 보내는 대신 예외로 합니다.이때는 이퀄라이저 객체가 소진된 후 호칭__next__()에 관계없이 StopIteration이 전송됩니다.균형기는 균형기 대상 자체를 되돌려주는 방법__iter__()을 실현해야 하기 때문에 균형기는 대부분의iterable를 받아들이는 곳에서 사용할 수 있다.명확한 예외는 여러 번 반복할 수 있는 코드다.(예를 들어list) 용기 대상은iter () 함수에 자신을 맡기거나 for 순환에서 사용할 때 사용하지 않은 균형기를 생성합니다.이 동작을 균형기를 사용하려면, 지난번 교체에서 사용된 같은 균형기 대상을 간단하게 되돌려 주는 빈 용기가 됩니다.
    특히
    용기 대상 (예:list) 이 for 순환에서 사용될 때 사용하지 않은 균형기를 생성합니다.
    나는 이 문장이 이해하기 쉽다고 생각한다.
    for i in range(3):
        print(i)
    
    이것은
    for_loop_test.py
    test_iterator = iter(range(3))
    i = next(test_iterator)
    print(i)
    i = next(test_iterator)
    print(i)
    i = next(test_iterator)
    print(i)
    
    그러니까 이거 하고 있는 거지?
    어렵기 때문에 위의 공식 문서의 전문을 이해해 보세요.
    (균형기)는 데이터 흐름의 대상을 나타낸다.
    네.
    삽입 함수next()와 균형기__next__() 방법을 반복적으로 호출하거나 흐르는 요소를 하나씩 되돌려줍니다.
    이것은 위에서 말한 것과 같다.__next__()의 경우도 해보세요.
    for_loop_test2.py
    test_iterator = iter(range(3))
    i = test_iterator.__next__()
    print(i)
    i = test_iterator.__next__()
    print(i)
    i = test_iterator.__next__()
    print(i)
    
    그렇습니다.
    데이터가 없으면 StopIteration을 보내는 대신 예외로 합니다.이때는 이퀄라이저 객체가 소진된 후 호칭__next__()에 관계없이 StopIteration이 전송됩니다.
    for_loop_test3.py
    test_iterator = iter(range(3))
    i = test_iterator.__next__()
    print(i)
    i = test_iterator.__next__()
    print(i)
    i = test_iterator.__next__()
    print(i)
    i = test_iterator.__next__()
    print(i)
    
    0
    1
    2
    StopIteration:
    확실하다.
    균형기는 균형기 대상 자체를 되돌려주는 방법__iter__()을 실현해야 하기 때문에 균형기는 대부분의iterable를 받아들이는 곳에서 사용할 수 있다.명확한 예외는 여러 번 반복할 수 있는 코드다.
    나는 이 문장 자체에 대해 그리 잘 알지 못하지만, 참고 문헌을 읽은 후
    여러 번 반복해서 인용할 때(한 번 쓰면 기억에서 사라진다)는 뜻은 아닌 것 같아요.
    초보 원문
    Iterators are required to have an __iter__() method that returns the iterator object itself so every iterator is also iterable and may be used in most places where other iterables are accepted. One notable exception is code which attempts multiple iteration passes.
    코드 which attempts multiple iteration passes라고 해서 이해하기 좋아요.
    (예를 들어list) 용기 대상은iter () 함수에 자신을 맡기거나 for 순환에서 사용할 때 사용하지 않은 균형기를 생성합니다.이 동작을 균형기를 사용하려면, 지난번 교체에서 사용된 같은 균형기 대상을 간단하게 되돌려 주는 빈 용기가 됩니다.
    지금까지의 이해는 충분히 이해할 수 있는 문.

    iterable


    여기까지 올 줄 알았어.
    할 수 있는 a를 가리킨다.
    iter([1,2])
    # <list_iterator at 0x7fcd7d736490>
    iter({1,2})
    # <set_iterator at 0x7fcd7c043c40>
    iter((1,2))
    # <tuple_iterator at 0x7fcd7d736eb0>
    iter("12")
    # <str_iterator at 0x7fcd7d736250>
    iter(1)
    # TypeError: 'int' object is not iterable
    
    이것을 보면 list,set,tuple,str는iterable입니다.
    int는 not iterable입니다.

    그림은 보여 주지만iterator→iterable object로의 전환은str를 제외하고는 정상적으로 작동할 수 있을 것 같습니다.

    테마의 맵


    iterable의 모든 요소에 function을 적용하는 균형기를 되돌려주고 결과를 되돌려줍니다.
    x, y = map(int, ["1", "2"])
    
    이 예를 고려하다.
    iterable의 모든 요소는'1'과'2'이고function은 int이기 때문이다
    int ("1") 와 int ("2") 는 이 순서대로 들어간iterator가 오른쪽에 있습니다.
    문제는 바로 왼쪽에 있다.
    iterator는 이런 느낌인데 값을 받을 수 있을까요!?되다
    (이렇게 쓰면 맵의 이해도가 크게 떨어진 원인이 이 때문인 것을 똑똑히 알 수 있다)
    x, y = [int(one) for one in ["1", "2"]]
    
    이것은 내가 한 것과 완전히 같다.
    추가된iterable 파라미터를 건네주면function는 그 수량의 파라미터만 가져와야 하며, 모든 추출기에서 병행적으로 얻은 요소에 적용됩니다.만약 여러 개의 추출기를 주면, 이 균형기는 그 중 가장 짧은 추출기가 다 떨어졌을 때 멈출 것이다.iter(a)의 규격은 같다.
    함수의 입력이 매개 변수 모듈에 설정되어 있으면 itertools입니다.starmap()을 참조하십시오.
    이거 여력 있으면 알아봐.(→다음 기사에 포함될 예정)

    맵의 사용 장소는?


    그 결과 다양한 자료를 찾아봐도 모두 포함된 방식으로 대체할 수 있을 것 같았다.
    (메모리가 좀 작다고 생각하지만 대량의 메모리를 처리하지 않으면 특별히 사용할 장점이 없다.)
    하지만https://qiita.com/matsui2019/items/81bfec06798ab572c7ae
    이 글을 읽고 고급 함수(함수를 매개 변수, 반환값으로 처리하는 함수 [^3])로 존재하는 것 자체가 의미가 있다고 생각합니다.
    만약 그렇지 않다면 메시지를 남겨주시기 바랍니다.

    참고 문헌


  • https://python.ms/iterator/

  • https://www.atmarkit.co.jp/ait/articles/1911/12/news011.html
  • 비교 range는 조금 알기 쉽다
  • [^1]: https://docs.python.org/ja/3/library/functions.html#map
    [^2]: https://docs.python.org/ja/3/glossary.html#term-iterator
    [^3]: https://qiita.com/may88seiji/items/8f7e42353b6904af5e9a

    좋은 웹페이지 즐겨찾기