자료구조.py

몽자비루 ㅣ 2023. 3. 11. 00:37

## 리스트

subway = ["a", "b", "c"]

# subway변수 내 b의 위치 찾기
print("subway.index(\\"b\\") : ", subway.index("b"))

# "d"를 subway 리스트 가장 뒤에 삽입함.
subway.append("d")
print("subway.append(\\"d\\") : ",subway)

# "e" 를 b와 c 사이에 삽입
subway.insert(2, "e")
print("subway.insert(2, \\"e\\") : ",subway)

# subway 리스트를 뒤에서 한개씩 꺼냄
print(subway.pop())
print("subway.pop() : ",subway)

# 같은 이름의 사람이 몇명 있는지 확인
subway.append("c")
print("subway.count(\\"c\\") : ",subway.count("c"))

# 정렬 가능 sort : 정순 / reverse : 역순
subway.sort()
print("subway.sort() : ",subway)
subway.reverse()
print("subway.reverse() : ",subway)

# subway의 내용을 모두 지우기
subway.clear()
print("subway.clear() : ",subway)

# 다양한 자료형을 함께 사용 가능.
mix_list = ["조세호", 20, True]

# 리스트 확장
subway = ["a", "b", "c"]
subway.extend(mix_list)
print("subway.extend(mix_list) : ",subway)
  • 리스트 : 변수 = [1,2,3]
    ㄴ append, insert, pop, append, sort, reserve 등 다양한 함수를 사용할 수 있다.
    ㄴ n~m까지의 숫자를 한번에 넣으려면 range(n:m) 를 사용하면 좋다.
         다만 위 경우, range값으로 들어가기 때문에 list로 한번 감싸줘야 한다.
## 사전(dictionary)
# 사전은 { } 를 사용한다, key : value 로 이루어져 있음.
cabinet = {3:"c", 2:"b"}

# cabinet변수에서 키값을 통해 value 찾기.
print(cabinet[3])
print(cabinet.get(3))

# 사전에 없는 키값을 검색 시,
# 변수[key]는 에러가 발생
# 변수.get(key)는 `None`을 출력한다.
# print(cabinet[5])
# (key , "대체값") 사용 시 `None` 대신 `대체값`출력
print(cabinet.get(5, "사용 가능"))

# key 가 cabinet안에 있으면 True / 없으면 False
print("3 in cabinet : ",3 in cabinet)

# 정수가 아닌 string으로도 출력할 수 있다.
cabinet = {"A-3":"조씨", "B-1":"차씨"}
print(cabinet["A-3"])

# cabinet안의 값 추가 / 변경
print(cabinet)
cabinet["A-3"] = "김씨"
cabinet["C-2"] = "변씨"
print(cabinet)

# cabinet의 값 제거
del cabinet["A-3"]
print(cabinet)

# key : key값만출력 / values : value값만 출력
print(cabinet.keys())
print(cabinet.values())
# items : key와 value를 매칭하여 출력
print(cabinet.items())

# cabinet 변수를 초기화
cabinet.clear()
print(cabinet)
  • 사전 : 변수 = {키:"값", 키:"값"}
    ㄴ 조금 낯선 개념이긴 한데, 변수[키] or 변수.get[키] 를 통해 매칭되는 값을 찾을수 있다.
    ㄴ 변수[키] = 값을 통해 값을 바꾸거나 추가할 수 있다.
## 튜플
# 튜플은 리스트와 다르게 리스트 변경이 되지 않지만 속도가 리스트보다 빠름
menu = ("돈까스", "치즈돈까스")
print(menu)

# 아래와 같이 추가할 수 없음
# menu.add("생선까스")

# 아래와 같이 선언하면 여러가지 변수를 한번에 선언할 수 있다.
(name, age, hobby) = ("조씨", "29", "게임")
print(name, age, hobby)
  • 튜플 : 변수 = (값, 값) ㄴ 튜플은 리스트와 다르게 변경이 불가하지만 속도가 빠르다.
    ㄴ 보통 변하지 않는 고정값에 많이 사용하며, 여러변수를 한번에 선언할 수도 있다.
## 집합 (set)
# 중복 X , 순서 x
my_set = {1,2,3,4,5,4,3}
# 1,2,3,4,5 만 출력된다. 4,3은 중복이라서 제외됨
print(my_set)

# set 선언 2가지 방법.
set1 = {'a','b','c'}
set2 = set(["a","d"])

# set1과 set2의 교집합 구하기
print(set1&set2)
print(set1.intersection(set2))

# set1과 set2의 합집합 구하기
print(set1|set2)
print(set1.union(set2))

# set1에서 set2의 차집합 구하기
print(set1-set2)
print(set1.difference(set2))

# set2에 값을 추가하기
set1.add('f')
print(set1)
print(sorted(set1))

# set1에 값을 제거하기
set2.remove('d')
print(set2)
  • 세트 : 변수 = {값, 값} ㄴ &, |, - 등 연산자를 사용해 set끼리 교집합, 차집합 등을 구할 수 있다. (+는 없다)
## 자료구조를 변경하기
# 처음 시작은 set
print(my_set, type(my_set))

# list로 변경
my_set = list(my_set)
print(my_set, type(my_set))

# tuple로 변경
my_set = tuple(my_set)
print(my_set, type(my_set))

# set 으로 변경
my_set = set(my_set)
print(my_set, type(my_set))
  • list , tuple, set (변수) 를 사용하여 타입을 변경할 수 있다.
## 퀴즈4
'''
댓글 작성자중 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 뽑는 추첨프로그램 작성
1. 댓글은 20명이 작성했다고 가정하고 아이디는 1~20
2. 댓글 내용과 상관없이 무작위로 추첨하되 중복 불가
3. random 모듈의 suffle / sample 활용
'''

from random import *

# range를 통해 범위를 한번에 list에 작성.
comment = list(range(1,21))

print(comment, type(comment))

# 리스트 섞기
shuffle(comment)
print(comment)

# 나는 하나를 뽑고 제거했는데 선생님은 4개를 뽑고 1/4으로 나눔
# sample로 뽑았을때 list로 들어가는것도 확인하기
chicken = sample(comment,1)
comment.remove(chicken[0])
print("치킨 담청자 : ",chicken)

print(comment)
print("커피 담청자 : ",sample(comment,3))
  • random 기능중 shuffle(섞기), sample(뽑기) 기능을 기억해두자

'python' 카테고리의 다른 글

함수.py  (0) 2023.03.11
분기.py  (0) 2023.03.11
문자열.py  (0) 2023.03.08
연산자.py  (0) 2023.03.07
자료형.py  (0) 2023.03.07