티스토리 뷰

Python

파이썬 내장 모듈 - 1

Alledy 2019. 9. 24. 17:38

파이썬 내장 모듈 - 1

개인적으로 공부하면서 기록한 것이기 때문에 어떤 기준에 따라 정렬된 것은 아닙니다.

enumerate

리스트, 튜플, 문자열 등 숫자가 있는 자료형을 입력으로 받아 인덱스값을 포함하여 enumerate 객체를 반환

만약 arr = ['a', 'b', 'c'] 의 인덱스 값을 얻고 싶다면

## 일반적인 루프 ##
for i in arr:
    print(i) # 'a' 'b' 'c' 출력
    
for i in range(len(arr)):
    print(i) # 0 1 2 출력

## enumaerate ##
for i in enumerate(arr):
    print(i) # 0 1 2 출력
    
for i, name in enumerate(arr):
    print(i, name) # 0 a 1 b 2 c 출력

enumerate을 사용하면 인덱스와 원소값을 동시에 쉽게 얻을 수 있다.

 

divmod

몫과 나머지를 튜플 형태로 돌려주는 함수.

divmod(9,4) # return (2,1)

9 // 4 # return 2
9 % 4 # return 1

몫과 나머지를 동시에 얻고 싶을 때 //이나 %을 각각 쓰는 것보다 효율적이다.

 

append

자바스크립트로 따지면 push 메서드. 원소를 리스트의 마지막 원소로 추가한다. 예를 들어 arr = [1,2,3] 일 때에 arr.append(4)하고 나서 arr은 [1,2,3,4]

 

리스트 슬라이싱 하기

자바스크립트의 slice메서드와 같은 기능을 하는데 아주 간단하게 표현할 수 있다. 예를 들어 arr = [1,2,3] 일 때에 arr[0:2] 은 인덱스 0부터 인덱스 2전까지를 말한다. 그러므로 [1,2] 를 나타내는 것이다. 여기서 0을 생략할 수도 있는데 arr[:2] 라고 표현하며, 반대로 시작 인덱스만 정하고 리스트의 끝까지 포함시키는 경우에는 arr[2:] 이런 식으로 나타낸다.

 

sort, sorted

  • 일반적인 소팅

    소트는 숫자는 숫자 작은 순에서 큰 순서대로, 알파벳은 a부터 z순으로 정렬시켜준다. 스트링 타입의 숫자도 마찬가지로 정렬해준다.

    반대 기준으로 소트하고 싶다면 arr.sort(reverse=True) 하거나 sorted 함수를 이용해서 sorted(arr, reverse=True) 라고 하면된다.

    sorted 함수와 sort 함수의 차이점은,

  1. sorted는 새로운 정렬된 리스트를 리턴한다. 또한 원래 리스트를 변형시키지 않는다. (immutable)

  2. sort는 none을 리턴한다. 또한 원래 리스트를 소트된 형태로 바꾸어 버린다. (mutable)

    만약 arr = [4,3,2,1] 이라고 할 때 arr.sort() 하면 arr 자체가 [1,2,3,4]로 바뀌고, sorted(arr)하면 [1,2,3,4]를 반환하지만 arr은 여전히 [4,3,2,1]이다.

 

  • 커스텀 소팅

    key 패러미터를 사용하면 커스텀 소팅을 할 수 있다. 예를 들어 길이를 기준으로 소팅하고 싶을 때에는

    L = ['cccc', 'b', 'dd', 'aaa']
    print(sorted(L)) # ['aaa', 'b', 'cccc', 'dd'] 
    print(sorted(L, key = len)) # ['b', 'dd', 'aaa', 'cccc']
    

     

    아니면 특정 함수의 반환값을 기준으로 소팅할 수도 있다. 예를 들어 7로 나눈 나머지가 작은 순에서 큰 순으로 정렬하고 싶을 때에는

    def func(x):
        return x % 7
    L = [15, 3, 11, 7]
    print(sorted(L)) # [3,7,11,15]
    print(sorted(L, key = func)) # [7,15,3,11] 
    

     

map

이터러블을 돌면서 각 원소에 대해 동일한 작업을 수행한다. 자바스크립트의 map과 같은데 그냥 표현 방식이 다르다.

// 자바스크립트 버전. 람다함수 사용
var arr = [1,2,3];
arr = arr.map(e=>e*2)
console.log(arr) // [2,4,6]
# 파이썬 버전. 
arr = [1,2,3]
arr = list(map(lambda e: e*2, arr))
print(arr) # [2,4,6]

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함