ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 내장함수들
    언어/파이썬 2021. 1. 11. 23:09

    파이썬은 여러가지 내장 함수들이 있다. 모든것을 외우면 물론 좋겠지만 체득 하는것이 더 효율적이라고 판단하여 기억이 나지 않을때 마다 하나씩 채우기로 한다.

     

    1. zip

    2. range

    3. any

    4. all

    zip

     

    zip()은 2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플시퀀스를 만드는 역할을 한다. 밑의 사진을 예시로 설명해보겠다. 

    zip함수

    파이썬 2에서는 zip()의 결과가 바로 리스트가 된다. 하지만 파이썬 3+에서는 제너레이터를 리턴한다. 제너레이터를 리턴하게 되면 전의 포스팅 처럼 메모리 적인 부분에서 좀 더 효율적으로 사용할 수 있는 이점이 있다. 

    제너레이터에서 실젯값을 추출하기 위해서는 다음과 같이 list()로 한번 더 묶어주면 된다.

     list로 zip을 푸는것

    아울러 zip()의 결과 자체는 리스트 시퀀스가 아닌 튜플(immutable) 시퀀스를 만들기 때문에, 값을 변경하는게 불가능하다. 

    zip의 결과는 tuple 시퀀스를 만들기 때문에 값을 바꾸는 것이 불가능하다.

    위 결과 처럼 튜플은 불변 객체이기 때문에 오류가 발생한다.

     

    이처럼 zip()은 여러 시퀀스에서 동일한 인덱스의 아이템을 순서대로 추출하여 튜플로 만들어 주는 역할을 한다. 

     

    잘 이해되지 않는다면 다음 예제를 살펴보자.

    >>> list(zip([1, 2, 3], [4, 5, 6])) 

    [(1, 4), (2, 5), (3, 6)] 

     

    >>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])) 

    [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

     

    >>> list(zip("abc", "def")) 

    [('a', 'd'), ('b', 'e'), ('c', 'f')]

     

    range

    ('[]'는 없어도 되는 것을 의미한다.)

    range([start,] stop [,step] )는 for문과 함께 자주 사용하는 함수이다. 이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 돌려준다.

    인수가 하나일 경우

    시작 숫자를 지정해 주지 않으면 range 함수는 0부터 시작한다.

    >>> list(range(5))

    [0, 1, 2, 3, 4]

    인수가 2개일 경우

    입력으로 주어지는 2개의 인수는 시작 숫자와 끝 숫자를 나타낸다. 단 끝 숫자는 해당 범위에 포함되지 않는다는 것에 주의하자.

    >>> list(range(5, 10))

    [5, 6, 7, 8, 9]

    인수가 3개일 경우

    세 번째 인수는 숫자 사이의 거리를 말한다.

    >>> list(range(1, 10, 2))

    [1, 3, 5, 7, 9]

    >>> list(range(0, -10, -1)) 

    [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

     

    all(iterable)

    all(x)는 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.

    >>> a = [1,2,3,4,5]

    >>> b = [1,3,3,4,5]

    for i in range(len(a)):

        if all(a[i] < b[i]):

            print("b의 원소보다 최소 하나큰 a의 원소가 있다.")

        else :

            print("b의 원소가 a의 원소보다 모두 큽니다.)

            

    any(iterable)

    any(x)는 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며 이 x의 요소 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False를 돌려준다. all(x)의 반대이다.

     

    >>> a = [1,2,3,4,5]

    >>> b = [1,3,3,4,5]

    for i in range(len(a)):

        if any(a[i] < b[i]):

            print("b의 원소보다 최소 하나큰 a의 원소가 있다.")

        else :

            print("b의 원소가 a의 원소보다 모두 큽니다.)

     

     

    '언어 > 파이썬' 카테고리의 다른 글

    with는 왜 쓰는 것일까  (0) 2021.01.12
    최댓값과 최솟값  (1) 2021.01.12
    정적메소드와 클래스메소드  (0) 2021.01.09
    unsqueeze에 대한 빠른 이해  (0) 2021.01.01
    id VS data_ptr()  (1) 2021.01.01

    댓글