*가독성이 다소 떨어지는 점 양해 부탁드립니다.
리스트(list)
👨🎓학생의 학점을 관리하는 프로그램을 작성해보자.
#학생A의 학점
A_network = "A+"
A_algorithm = "A"
A_OS = "B"
#학생B의 학점
B_network = "A"
B_algorithm = "C"
B_OS = "D"
위와 같이 변수에 원하는 값을 저장할 수 있다. 만약, 학생의 수가 매우 많아지면 어떻게 될까?
→ 보기도 안좋고, 유지보수하는데 최악이다.
따라서, 위와 같은 정보를 리스트를 통해 한 번에 정리할 수 있다.
A_grade = ["A+", "A", "B"]
B_grade = ["A", "C", "D"]
예제처럼, ‘[ ]’를 사용해서 리스트라는 자료구조로 나타낼 수 있다.
리스트는 조건문, 반복문을 활용해서 쉽게 처리할 수 있다.
리스트의 특징
- 한 리스트에 다양한 자료형을 넣을 수 있다.
- 내장 함수인 list()를 통해 빈 리스트를 만들 수 있다.
- 문자열과 같이 인덱스로 접근할 수 있다.
example = [123, 12.5, "A", True] #다양한 자료형을 한 번에 넣을 수 있다.
print(example[1]) #12.5
temp = list()
print(temp) # []
리스트의 활용법
1️⃣요소 추가하기
.append() : 리스트의 맨 끝에 요소를 추가할 수 있다.
.insert(idx, value) : 함수를 사용해서 idx의 위치에 value를 추가할 수 있다.
example = [1,2,3]
example.append(4)
print(example) #[1,2,3,4]
example.insert(1,9)
print(example) #[1,9,2,3,4]
❓매개 변수(파라미터, parameter)❓
매개 변수란, 함수에 넘겨주는 값을 의미한다. 추후, 함수를 배울 때 더 자세히 다룰 예정이다.
def add(num1, num2): #num1, num2라는 매개변수 2개가 필요한 함수
return num1+num2 #반환 값
res = add(1,2) //1,2라는 인수
print(res) #3
2️⃣요소 삭제하기
.pop() : 리스트의 맨 끝의 요소를 삭제하거나, 원하는 요소를 삭제할 수 있다.
.remove(value) : 맨 처음에 나오는 value를 삭제한다.
del 값 : ‘값’ 객체 삭제하기
example = [1,2,3,4,5,6]
example.pop()
print(example) #[1,2,3,4,5]
example.pop(1)
print(example) #[1,3,4,5]
example.remove(3)
print(example) #[1,4,5]
del example[1]
print(example) #[4,5]
"""!pop()함수는 삭제하는 요소를 반환 값을 갖는다.!"""
example = [1,2,3,4]
popValue = example.pop()
print(popValue) #4
3️⃣ 그 외 유용한 내장 함수
.sort() : 리스트 정렬하기 (Default: 오름차순)
.reverse() : 리스트 뒤집기
.index(value) : value의 인덱스 찾기
.count(value) : value의 개수 세기
#1.오름차순 정렬
example = [3,2,4,1,5]
example.sort()
print(example) #[1,2,3,4,5]
#2.내림차순 정렬
example = [3,2,4,1,5]
example.sort(reverse=True)
print(example) #[5,4,3,2,1]
#3.인덱스 찾기
example = [1,2,3,4,5]
idx = example.index(2)
print(idx) #1
#4.개수 세기
example = [1,1,2,3,4]
cnt = example.count(1)
print(cnt) #2
중첩 리스트
리스트 안에 리스트를 넣어서 중첩 리스트를 표현할 수 있다.
example = [1,2, [3,4]]
print(example) #[1,2, [3,4]]
2차원적으로 표현할 때 유용하게 사용된다.
twoDemension = [[1, 2, 3, 4, 5 ],
[6, 7, 8, 9, 10],
[11,12,13,14,15]]
1️⃣2차원 리스트의 접근
문자열과 마찬가지로 [ ] 를 사용해서 인덱스로 접근할 수 있다. → 리스트[행][열]
twoDemension = [[1, 2, 3, 4, 5 ],
[6, 7, 8, 9, 10],
[11,12,13,14,15]]
(0,0), (0,1), (0,2), (0,3), (0,4)
(1,0), (1,1), (1,2), (1,3), (1,4)
(2,1), (2,2), (2,3), (2,3), (2,4)
print(twoDemension[1][0]) #6
print(twoDemensino[2][3]) #14
같은 원리로 3차원 리스트도 가능하다.
example = [1,2,[3,4,5,[6,7]]]
print([2][3][0]) #6
print([2][3][1]) #7
튜플(tuple)
튜플은 리스트와 거의 유사하지만, 조금 다른 특징을 갖고 있다.
- [ ]로 감싸는 리스트와는 달리, 튜플은 ( )로 감싼다.
- 튜플은 값 수정이 불가능하다.
- 객체 삭제가 불가능하다. (del X)
→ 튜플은 생성되면 그 자체로 객체가 되는 것
listExample = [1,2,3]
listExample[1] = 9
print(listExample) #[1,9,3]
tupleExample = (1,2,3)
tupleExample[1] = 9 #TypeError: 'tuple' object does not support item assignment
del tupleExample[0] #TypeError: 'tuple' object doesn't support item deletion
❓튜플의 값을 수정하거나 삭제하고 싶은데?
튜플의 값을 수정하거나 삭제하려면, 먼저 리스트로 변환해서 변경 후 튜플로 바꿔야 한다.
tup = (1,2,3)
temp = list(tup)
temp.append(4)
temp.pop(1)
tup = tuple(temp)
print(tup) #(1,3,4)
딕셔너리(Dictionary)
보통 프로그래밍 언어는 연관 배열(해시)를 갖고 있는데, 파이썬은 딕셔너리를 갖고 있다.
딕셔너리는 키-값(Key-Value) 형태를 갖는 자료구조이다.
studentA = {"name" : "홍길동", "age" : 24 }
studentB = {"name" : "아무개", "age" : 30 }
example = {1 : "1번값", 2 : "2번값", 3 : "3번값"}
1️⃣딕셔너리의 특징
- 키(Key)에는 변하지 않는 값만 넣고, 값(Value)은 어떤 값을 넣어도 된다.
- 키값이 중복되면 안된다. (에러가 발생하진 않지만, 중복되는 값들 중 하나는 무시된다.)
#1.키에 변하는 값(리스트)는 안된다.
exA = {[1,2] : "안돼용"} #TypeError: unhashable type: 'list'
exB = [(1,2) : "가능"}
#2.키값이 중복되면 안됨.
exC = {1: "a", 1:"b"}
print(exC) #{1:"b"} -> 1:"a"가 아예 무시됨.
2️⃣딕셔너리의 요소 추가/삭제
#1. 요소 추가
dict = {1:"1번"}
dict[2] = "2번"
print(dict) #{1:"1번", 2:"2번"}
#2. 요소 삭제
dict = {1:"1번", 2:"2번"}
del dict[1]
print(dict) #{1:"1번"}
3️⃣딕셔너리의 활용
#1.Key를 활용해 Value 얻기 ('[]'활용, get()함수 활용)
dict = {"이름":"홍길동", "번호":"01012345678", "학과":"컴퓨터학과"}
print(dict["이름"]) #홍길동
print(dict["번호"]) #01012345678
print(dict.get("학과")) #컴퓨터학과
#2.keys() 함수로 Key로 구성된 리스트를 얻을 수 있다.
dict = {"이름":"홍길동", "번호":"01012345678", "학과":"컴퓨터학과"}
dictToList = dict.keys()
print(dictToList) # dict_keys(["이름", "번호", "학과"])
dictToList = list(dictToList)
print(dictToList) #["이름", "번호", "학과"]
#3.values() 함수로 Value로 구성된 리스트도 얻을 수 있다.
dict = {"이름":"홍길동", "번호":"01012345678", "학과":"컴퓨터학과"}
dictToList = dict.values()
print(dictToList) # dict_values(["홍길동", "01012345678", "컴퓨터학과"])
dictToList = list(dictToList)
print(dictToList) #["홍길동", "01012345678", "컴퓨터학과"]
#4.items()함수로 Key-Value 값 한번에 얻기
dict = {"이름":"홍길동", "번호":"01012345678", "학과":"컴퓨터학과"}
print(dict.items()) #dict_items([{"이름":"홍길동", "번호":"01012345678", "학과":"컴퓨터학과"}])
#5.딕셔너리에 해당 Key값이 있는지 확인하기
dict = {"이름":"홍길동", "번호":"01012345678", "학과":"컴퓨터학과"}
'학점' in dict #False
'이름' in dict #True
집합(Set)
집합은 중복을 허용하지 않고, 순서를 보장하지 않는 자료구조이다.
setEx = set([1,1,1,2,3])
print(setEx) #{1,2,3}
중복을 허용하지 않는 점이 유용하게 사용된다.
1️⃣요소 추가/삭제
#1.요소 추가를 위한 .add() 함수
s1 = set([1,2,3])
s1.add(4)
print(s1) #{1,2,3,4}
#2.여러 개의 값을 한 번에 추가하기 위한 .update() 함수
s2 = set([1,2,3])
s2.update([4,5,6]) #{1,2,3,4,5,6}
#3.요소 제거를 위한 .remove() 함수
s3 = set([1,2,3])
s3.remove(3) #{1,2}
2️⃣집합의 활용
#1.합집합
s1 = set([1,2,3,4,5])
s2 = set([4,5,6,7,8])
s1.union(s2) #{1,2,3,4,5,6,7,8}
#2.교집합
s1 & s2 #{4,5}
#3.차집합
s2 - s1 #{6,7,8}
보기 좋으라고 주석은 순서대로 적었지만, 실제로 출력해보면 뒤죽박죽으로 출력된다.
'개발 > Python' 카테고리의 다른 글
[Python] Python 기초 지식과 문자열, 입력과 출력 (0) | 2022.06.22 |
---|