티스토리 뷰

TIL

[TIL] 2023 / 03 / 16 - Python

희철 2023. 3. 16. 21:53

문제 푼 것만 기록하니 썼던 문법도 까먹을 때가 있었음. 그래서 기억이 더 잘나도록 간단하게라도 정리하기로함.

 

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