Programming Language/Python

[Python] 5.리스트 / 사전 / 튜플 / 세트 / 자료구조변경

노마딕 2020. 6. 29. 21:00
반응형

1. 리스트(list)

# 리스트 []

# 지하철 칸별로 10명, 20명, 30명
subway = [10,20,30]
print(subway)
print(subway[0])

subway = ["유재석", "조세호","박명수"]
print(subway)

# 조세호가 몇 번째에 있을까?
print(subway.index("조세호"))

# 하하가 다음 정류장에서 다음 칸에 탐
subway.append("하하")
print(subway)

# 정형돈이 유재석 / 조세호 사이에 태워봄
subway.insert(1, "정형돈")
print(subway)

# 한명씩 꺼냄
subway.pop() 
print(subway)

# 같은 이름의 사람이 몇 명 있는지 확인
subway.append("유재석")
print(subway)
print(subway.count("유재석"))

# 정렬
num_list = [5, 2, 4, 3, 1]
num_list.sort()
print(num_list)

# 역순정렬
num_list.reverse()
print(num_list)

# 모두 지우기
num_list.clear()
print(num_list)

# 다양한 자료형과 함께 사용
mix_list = ["조세호", 20, True]
print(mix_list)

# 리스트 확장
numb_list = [5, 4, 3, 2, 1]
numb_list.extend(mix_list)
print(numb_list)


# result


[10, 20, 30]
10

['유재석', '조세호', '박명수']

1

['유재석', '조세호', '박명수', '하하']

['유재석', '정형돈', '조세호', '박명수', '하하']

['유재석', '정형돈', '조세호', '박명수']

['유재석', '정형돈', '조세호', '박명수', '유재석']
2

[1, 2, 3, 4, 5]

[5, 4, 3, 2, 1]

[]

['조세호', 20, True]

[5, 4, 3, 2, 1, '조세호', 20, True]

 

2. 사전(Dictionary) - 리스트와 차이점은 키값으로 value를 매칭할 수 있는 점이다. 리스트는 순서대로만 쌓이기때문에 리스트내의 항목 위치를 알아야한다.

cabinet = {3:"유재석", 100:"김태호"} # {key:Value}
print(cabinet[3])
print(cabinet[100])
print(cabinet.get(3))

# print(cabinet[5]) # 오류와 함께 종료
print(cabinet.get(5)) # Value = None 출력
print(cabinet.get(5,"사용가능"))


print(3 in cabinet) # 있다면 True 없다면 False
print(5 in cabinet) # 있다면 True 없다면 False


# 추가
cabinet1 = {"A-3":"유재석", "B-100":"김태호"}
cabinet1["C-20"] = "조세호"
print(cabinet1)

# 삭제
del cabinet1["A-3"]
print(cabinet1)

# key값만 출력
print(cabinet1.keys())

# value값만 출력
print(cabinet1.values())

# 쌍으로 출력
print(cabinet1.items())

# 전체 삭제
cabinet1.clear()
print(cabinet1)


# result


유재석
김태호
유재석

None
사용가능

True
False

{'A-3': '유재석', 'B-100': '김태호', 'C-20': '조세호'}

{'B-100': '김태호', 'C-20': '조세호'}

dict_keys(['B-100', 'C-20'])

dict_values(['김태호', '조세호'])

dict_items([('B-100', '김태호'), ('C-20', '조세호')])

{}

 

 

3. 튜플(tuple) - 내부 요소 변경이 없는 경우에만 사용한다. 추가 삭제가 불가능하다.

menu = ("돈까스", "치즈까스") # 변경이 없는 조건에서
print(menu[0])
print(menu[1])

# name = "김종국"
# age = 20
# hobby = "코딩"

(name, age, hobby) = ("김종국", 20, "코딩")

print(name, age, hobby)


# result


돈까스
치즈까스

김종국 20 코딩

 

 

4. 집합 (set) - 요소의 중복이 안되고, 순서가 없다.

my_set = {1,2,3,3,3}
print(my_set)

javadev = {"유재석", "김태호", "양세형"}
pythondev = set(["유재석", "박명수"])

# and 조건
print(javadev & pythondev)
print(javadev.intersection(pythondev))

# or 조건
print(javadev | pythondev)
print(javadev.union(pythondev))

# nor 조건 (java 할수 있지만, python은 할 줄 모르는 개발자)
print(javadev - pythondev)
print(javadev.difference(pythondev))

# add
pythondev.add("김태호")
print(pythondev)

# delete
javadev.remove("김태호")
print(javadev)


# result



{1, 2, 3}

{'유재석'}
{'유재석'}

{'유재석', '박명수', '양세형', '김태호'}
{'유재석', '박명수', '양세형', '김태호'}

{'양세형', '김태호'}
{'양세형', '김태호'}

{'김태호', '유재석', '박명수'}
{'양세형', '유재석'}

 

 

5. 자료구조의 변경

menu = {"커피", "우유", "주스"}
print(menu, type(menu))

menu = list(menu)
print(menu, type(menu))

menu = tuple(menu)
print(menu, type(menu))

menu = set(menu)
print(menu, type(menu))



# result


{'우유', '커피', '주스'} <class 'set'>
['우유', '커피', '주스'] <class 'list'>
('우유', '커피', '주스') <class 'tuple'>
{'우유', '커피', '주스'} <class 'set'>

 

 

# 퀴즈 #

# 작성자가 한 풀이

from random import *
lst = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
shuffle(lst)

print("-- 당첨자 발표 --")
print("치킨 당첨자 : " + str(lst[0]))
print("커피 당첨자 : " + str(lst[1]), str(lst[2]), str(lst[3]))
print("-- 축하합니다 --")


# 나도코딩님의 풀이

users = range(1, 21) # 1부터 21미만까지 숫자를 생성
print(type(users))
users = list(users)
print(type(users))

winners = sample(users, 4) # 4명 중에서 1명은 치킨, 3명은 커피
print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))
print("-- 축하합니다 --")



# result


-- 당첨자 발표 --
치킨 당첨자 : 18
커피 당첨자 : [5, 10, 3] 10 3
-- 축하합니다 --


<class 'range'>
<class 'list'>
-- 당첨자 발표 --
치킨 당첨자 : 5
커피 당첨자 : [15, 16, 2]
-- 축하합니다 --

 

 

본 자료는 나도코딩(유튜버)님의 강의를 바탕으로, 학습하며 정리된 자료임을 밝힙니다.

반응형