티스토리 뷰
문제 푼 것만 기록하니 썼던 문법도 까먹을 때가 있었음. 그래서 기억이 더 잘나도록 간단하게라도 정리하기로함.
Deque
deque은 양쪽에서 원소를 제거할 수 있음.
swift에서는 해당 자료구조가 존재하지 않아서 직접 구현해야했지만, 파이썬에서는 collections에 존재하기때문에 import 후에 사용하면됨.
리스트를 이용해 맨 앞의 원소를 pop(0)으로 제거하면 시간복잡도가 O(n)임. => 스위프트 removeFirst()와 동일
deque을 사용하면 popleft()를 이용해 더 빠르게 처리할 수 있음.
[1:]
swift에서는 인덱스범위를 ...를 이용해 나타냈었음.
-> a[1...2]
하지만 파이썬에서는 :를 이용하면됨.
앞이 비어있다면 맨 처음부터, 뒤가 비어있다면 맨 마지막까지를 의미함
그래서 두 번째 인덱스부터 마지막까지를 표현하고 싶으면 a[1:] 이렇게 하면됨.
filter
filter를 사용할때 swift처럼 클로저를 사용하고 싶었는데, lambda라는 것이 있었음.
예를 들어 list = [1,2,3,4,5,6,7]이 있을때, 5이상인 것만 필터링하게되면 아래처럼 작성하면됨.
list(filter(lambda n : n > 4, list))
즉, lambda부분에 원하는 조건을 적어주면 됨.
sort
파이썬에서는 그냥 sort()를 하면 자동으로 오름차순으로 정렬됨.
만약 내림차순으로 정렬하고 싶으면, 아래처럼 작성하면됨.
a.sort(reverse: True)
이차원배열일때는 다음과 같이 정렬할 수 있음.
예를 들어, a = [(1,2),(4,3),(1,5),(0,3),(2,9)]가 있다고 해보겠음.
이러한 경우에는 key를 사용해야함
우선, 각 원소에서 첫 번째 원소로 오름차순 정렬하면
a.sort(key=lambda x : x[0])
print(a)
# [(0, 3), (1, 2), (1, 5), (2, 9), (4, 3)]
내림차순이라면 위에서 했듯이 reverse만 붙여주면됨.
a.sort(key=lambda x : x[0],reverse=True)
print(a)
#[(4, 3), (2, 9), (1, 2), (1, 5), (0, 3)]
두 번째 원소를 기준으로 할때도 위와 마찬가지로 x[0] 대신 x[1]로 하면됨.
첫 번째 원소를 기준으로 정렬하고, 같은 경우엔 두 번째 원소를 기준으로 정렬하는 경우엔 다음과 같이하면됨.
a = [(1,5),(4,3),(1,2),(0,3),(2,9)]
a.sort(key=lambda x : (x[0],x[1]))
print(a)
#[(0, 3), (1, 2), (1, 5), (2, 9), (4, 3)]
()안에 순서대로 넣어주면됨.
첫 번째 원소를 기준으로 오름차순 정렬하고, 같은 경우엔 두 번째 원소를 기준으로 내림차순으로 정렬하고 싶을땐,(제일 신기했음)
a = [(1,5),(4,3),(1,2),(0,3),(2,9)]
a.sort(key=lambda x : (x[0],-x[1]))
print(a)
#[(0, 3), (1, 5), (1, 2), (2, 9), (4, 3)]
reverse대신 괄호 안에서 - 부호만 붙여주면됨.
즉, x[0]의 부호가 +이므로 x[0]을 기준으로 오름차순으로 정렬하고 x[0]이 같은 경우엔 x[1]을 기준으로 정렬하는데 부호가 - 이므로 내림차순으로 정렬한다는 의미.
까먹지말자
'TIL' 카테고리의 다른 글
[TIL] 2023 / 04 / 01 - MySQL (0) | 2023.04.01 |
---|---|
[TIL] 2023 / 03 / 17 (0) | 2023.03.17 |
[TIL] 2022 / 12 / 19 - SwiftUI (0) | 2022.12.19 |
[TIL] 2022 / 11 / 1 (0) | 2022.11.01 |
[TIL] 2022 / 10 / 27 - Rx (0) | 2022.10.27 |
- Total
- Today
- Yesterday