파이썬 내장 모듈 - 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 함수의 차이점은,
sorted는 새로운 정렬된 리스트를 리턴한다. 또한 원래 리스트를 변형시키지 않는다. (immutable)
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]