Maron's DATA Log

[Python] 자료 구조 - List, Dictionary, Tuple, Set 본문

Python

[Python] 자료 구조 - List, Dictionary, Tuple, Set

maron2ee 2020. 11. 29. 04:30

# List = [ ]

# 리스트 관련 메소드 

 

list = ["짜장", "짬뽕", "탕수육"]

print(list)

 

# 원하는 값 몇 번째에 있는지

print(list.index("짬뽕"))

 

# 리스트에 원소 하나 마지막에 추가

list.append("마라탕")

print(list)

 

# 특정한 인덱스 위치에 원소 추가

list.insert("꿔바로우", 1)

print(list)

 

# 한개씩 뒤에서 꺼냄

print(list.pop( ))

print(list)

 

# 리스트에서 특정한 값을 가지는 데이터의 개수 세기

print(list.count("짜장"))

 

list.append("짜장")

print(list)

print(list.count("짜장"))

 

# 정렬 - 기본 정렬 기능은 오름차순 // 변수명.sort(reverse=True) - 내림차순

num_list = [3, 5, 7, 4, 1, 2]

num_list.sort( )

print(num_list)

 

# 리스트의 원소 순서 뒤집기

num_list.reverse( )

print(num_list)

 

# 전체 지우기

num_list.clear( )

print(num_list)

 

# 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러 개면 하나만 제거

num_list.remove(7)

print(num_list)

 

# 다양한 자료형 데이터 함께 사용

mix_list = [2, 5, "짜장", True]

print(mixlist)

 

# 리스트 확장

num_list.extend(mix_list)

print(num_list)

 

 

 

# Dictionary = { }

: Key (키) 와 Value (값)의 쌍을 데이터로 가지는 자료형

변경 불가능한 자료형을 키로 사용 가능

 

dic = {3:"짜장", 5:"짬뽕"}

 

# 사전 자료에서 값을 가져오는 방법 1

print(dic[3])

print(dic[5])

 

# 사전 자료에서 값을 가져오는 방법 1

print(dic.get(3))

 

# 값이 딕셔너리 안에 할당 안 되어있는 경우 

print(dic[7])     #오류 발생 -> 프로그램 종료

print(dic.get(7))     # None 출력 

print(dic.get(7, "사용 가능"))     # 값이 있으면 값 출력, 값이 없으면 사용 가능 출력

 

# 사전 자료 안에 원하는 값 있는지 확인

print(3 in dic)    # True/False

 

 

# 정수 아닌 string 도 가능

dic = {"A-1":"딸기", "B-2":"포도"}

print(dic["A-1"])

 

# 값 추가

dic["C-3"] = "사과"

print(dic)

 

# 값 대체

dic["A-1"] = "수박"

print(dic)

 

# 값 제거

del dic["A-1"]

print(dic)

 

# key 들만 출력

print(dic.keys( ))

 

# value 들만 출력

print(dic.values( ))

 

# key, value 쌍으로 출력

print(dic.items( ))

 

# 모든 값 제거

dic.clear( )

print(dic)

 

 

# Tuple = ( )

: 리스트와 유사하지만 튜플은 한 번 선언된 값은 변경이나 추가 불가능  →  고정된 값 사용

 

* 튜플 장점

1. 서로 다른 성질의 데이터를 묶어서 관리할 때

- 최단 경로 알고리즘에서는 (비용, 노드번호)의 형태로 튜플 자료형 사용

 

2. 데이터의 나열을 해싱(hashing)의 키 값으로 사용해야할 때

- 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용

 

3. 리스트보다 메모리를 효율적으로 사용해야할 때

 

 

menu = ("고추장", "된장")

print(menu[0])

 

menu.add("간장")      # 오류 발생

 

# 튜플 이용해 한번에 값 선언 : 서로 다른 변수에 서로 다른 값들을 순서대로 넣어 줌

name = "마론"

age = 20

hobby = "코딩"

print(name, age, hobby)

 

(nae, age, hobby) = ("마론", 20, "코딩")

print(name, age, hobby)

 

 

# Set (집합) = { }

: 중복 허용 X, 순서 없음 

리스트 나 문자열을 이용해 초기화 - set( ) 함수 이용

 

set = {1, 2, 2, 3, 3, 3}

print(set)

 

java = {"a", "b", "c"}

python = set(["a", "f", "g"])

 

# 교집합 (A∩B)

print(java & python)

print(java.intersection(python))

 

# 합집합 (A∪B)

print(java | python)

print(java.union(python))

 

# 차집합 (A-B)

print(java - python)

print(java.difference(python))

 

# 값 추가

python.add("h")

print(python)

 

# 값 여러 개 추가

python.update("i", "j")

print(python)

 

# 값 제거

python.remove("f")

print(python)

 

 

# 특징

* 리스트나 튜플은 순서가 있기 때문에 인덱싱 이용 가능

* 딕셔너리(사전)형과 세트(집합) 자료형은 순서가 없기 때문에 인덱싱 이용 불가능

 

 

# 자료 구조의 변경

menu = {"아메리카노", "라떼", "프라푸치노"}
print(menu, type(menu))     # class 'set'

 

menu = list(menu)

print(menu, type(menu))     # class 'list'

 

menu = tuple(menu)

print(menu, type(menu))     # class 'tuple'

 

menu = set(menu)

print(menu, type(menu))     # class 'set'

 

 

 

 

from random import *

lst = [1, 2, 3, 4, 5]

 

# Shuffle 

: 리스트 안에 있는 값 무작위로 순서 바꾸기

suffle(lst)

print(lst)

 

# Sample

: 첫번째 인자 (lst) 에서 두번째 인자 (원하는 갯수 : 1) 만큼 랜덤으로 뽑기

print(sample(lst, 1))

'Python' 카테고리의 다른 글

[Python] 함수  (0) 2020.11.30
[Python] 조건문 - If / 반복문 - For & While  (0) 2020.11.30
[Python] 문자열 함수  (0) 2020.11.27
[Python] Random (랜덤) 함수  (0) 2020.11.27
[Python] class 와 instance(object) // 기본 용어  (0) 2020.11.21
Comments