728x90
2일차
파이썬 자료구조 정리
리스트
→ 수정 가능한 일련의 요소들을 저장하는데 주로 사용하는 구조
- 저장 되는 요소들의 자료 유형은 같지 않아도 됨
- 리스트를 만들려면 [] 안에 데이터 요소들을 넣고 쉼표로 구분해주면 됨
- 알고리즘이 작동할 때 임시 데이터를 다루는데 유용함
aList = ["Hello", 33 , "Daegu", True]
print(List)
주로 사용 하는 방식
- 리스트 인덱싱 → list_colors[1]
- 리스트 슬라이싱 → list_colors[0:2] → 인덱스 0번에서 1번 까지 슬라이싱(0 ≤ a < 2)
→ list_colors[:2] → 인덱스 처음부터 1번까지 슬라이싱((0 ≤ a < 2)
- 네거티브 인덱싱 → 끝에서 거꾸로 세어주는 방식 → 뒤에서 부터 세어준다고 생각하면 됨
- 내포(nesting)
a = [1, 2, [100, 200, 300], 6]
max(a[2])
output : 300
a[2][1]
output : 200
⭐시간 복잡도 - 자주 쓰는 것들
- append() : item 맨 뒤에 추가 → O(1)
- clear() : 모든 item 삭제 → O(1)
- pop() : index 로 item을 가져오면서 삭제 → O(1)
- remove() : value 로 item 삭제 → O(n)
- del list[0] : index 참조로 리스트 값 삭제 → O(n)
- list[?:?] : list 슬라이싱 → O(n)
- sort() : list sorting → O(nlogn)
- len(?) : list 길이 → O(1)
람다 함수
→ 함수를 즉시 생성할 수 있다는 것이 특징 + “익명함수”라고도 함
- 데이터 필터링
list(filter(lambda x: x>100 [-5 , 200, 300, -10, 10, 1000]))
output : [200, 300, 1000]
*** 생각보다 람다함수를 많이 쓰게 되는거 같은데 이런식으로 쓰는 건 또 책에서 처음 보는 거 같음**
- 데이터 변환
list(map(lambda x:x**2, [11,22,33,44,55]))
output : [121, 484, 1089, 1936, 3025]
*** map을 이용해서 이런식으로 쓰면 for문으로 안돌려도 되서 괜찮아 보임**
range함수
→를 이용하면 숫자로 구성된 큰 리스트를 쉽게 생성 가능함
ex1) x = range(6)
list(x)
output : [0, 1, 2, 3, 4, 5]
ex2) oddN = range(3, 30, 2)
list(oddN)
output : [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]
튜플
→ 수정할 수 없는 자료 구조로 읽기만 가능함 → 튜플은 요소들을 ()로 감싸서 생성!!
→ 여러 자료 유형을 요소로 가질 수 있음
a = (1, 2, (100, 200, 300), 6)
max(a[2])
output : 300
a[2][1]
output : 200
→ 성능 향상을 위해서 변형할 필요가 없는 데이터 자료 일 경우 튜플을 사용해주는 것도 좋음 !!
딕셔너리
→ 데이터 값을 키-값 쌍으로 저장 해두는 자료구조
→ 데이터를 잘 식별 할 수 있도록 키를 설정해야 함
→ 값을 리스트로 지정하면 중첩된 딕셔너리를 만드는 것도 가능함
→ 값의 경우, 어떠한 자료형도 가능함
list_colors ={
"manual_color" : "Yellow",
"approved_color" : "Green",
"refused_color" : "Red"
}
print(list_colors)
output: {'manual_color':'Yellow', 'approved_color':'Green', 'refused_color':'Red'}
#값을 가져오는 방식
list_colors.get('approved_color')
output: 'Green'
#키에 대응하는 값을 갱신 해주는 방법
list_color['approved_color'] = "Purple"
print(list_colors)
output: {'manual_color':'Yellow', 'approved_color':'Purple', 'refused_color':'Red'}
세트
→ 여러 유형으로 구성된 요소의 컬렉션(이게 뭔말일까요?)
→ 수학에서 자주 접한 개념인 집합과 같은 개념으로, 하나의 포대 안에 모든 데이터를 몰아서 저장하는 것, 세트 타입에서는 각 요소들의 순서를 매길 수 없으며, 중복된 값 또한 허용하지 않습니다.
→ 우리가 아는 정렬이랑 같은 개념으로 사용하는 자료구조
세트 연산
- A|B → 두 집합의 합집합
- A%B →두 집합의 교집합
벡터
→ 데이터를 저장하는 일차원 자료구조
- 리스트로 사용하기
myList = [ 22, 33, 44, 55 ]
print(myList)
output: [22 33 44 55]
print(type(myList))
output: <class 'list'>
728x90
'DEV > 알고리즘 문제 풀이' 카테고리의 다른 글
LEETCODE(리트코드) 125번 Valid Palindrome (유효한 팬린드롬) (0) | 2022.11.25 |
---|---|
알고리즘 다시 공부하기 3일차 (0) | 2022.09.12 |
알고리즘 다시 공부하기 1일차 (0) | 2022.09.07 |
[백준] 17298번 with Python (아직 못품) (0) | 2022.04.13 |