sm 기술 블로그

7. 배열 (리스트/데이터 사전/튜플/set) 본문

Python

7. 배열 (리스트/데이터 사전/튜플/set)

sm_hope 2022. 5. 3. 17:03
리스트
리스트는 데이터들을 잘 관리하기 위해서 묶어서 관리할 수 있는 자료형 중의 하나 이다.

(1) 기본 구조

# 지하철 칸 별로 10명, 20명, 30명 
subway1= 10
subway2= 20
subway3= 30

subway = [10, 20, 30]
print(subway)

subway1 , subway2, subway3 을 따로따로 선언 할 수 있지만, 리스트를 이용하면 subway = []로 한번에 정의가 가능하다.

 

리스트에 대한 출력 결과는 [    ]  가 붙어서 나온다.

# 출력결과
[10, 20, 30]

 

 

(2) 함수 - index() append() insert()

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

#조세호씨가 몇 번째 탑승?
print(subway.index("조세호"))

#하하가 다음 정류장에 다음칸에 탐
subway.append("하하") #(현재 ["유재석", "조세호", "박명수", "하하"])
print(subway)

#append는 맨뒤에 들어감.
#정형돈이가 유재석 과 조세호 사이에 태워좀
subway.insert(1, "정형돈")
print(subway)

_____.index("A") : 리스트 중에서 A가 몇번째에 있는지 알려준다.

_____.append("B") : 리스트 맨 뒤에 B를 추가시킨다.  

_____.insert(1, "C") : 리스트의 1 위치에 C를 추가한다.

 

# 출력결과
['유재석', '조세호', '박명수']
1
['유재석', '조세호', '박명수', '하하']
['유재석', '정형돈', '조세호', '박명수', '하하']

※ 문자열은 리스트 내에서 ['문자열'] 로 표시된다.

 

 

(3) 함수 - pop() count()

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

# 지하철에 있는 사람을 한 명씩 뒤에서 꺼냄
print(subway.pop()) # 박명수
print(subway) #["유재석", "조세호"]

print(subway.pop()) # 조세호
print(subway) #["유재석"]

# 같은 이름의 사람이 몇 명 있는지 확인

subway.append("유재석")
print(subway) #["유재석", "유재석"]
print(subway.count("유재석")) # 2

_____.pop() : 리스트에서 맨 뒤에 있는 값을 꺼낸다.

_____.count("A") : A가 몇번 들어 있는지 출력해 줌.

 

# 출력 결과

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

 

 

(4) 함수 - sort() reverse() remove(), num_list(), clear() 

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

# 리스트를 역으로 바꿔 줌.
num_list.reverse()
print(num_list)

# 특정 값 삭제
num_list.remove(1)
print(num_list)

# 특정 위치 삭제
del num_list[2]
print(num_list)
# 특정 범위 삭제
del num_list[0:2]
print(num_list)

num_list = [1,2,5,3,4]
print(num_list)

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

_____.sort() : 순서에 맞게 정렬

_____.reverse() : 현재 리스트의 순서를 뒤집는다.

_____.remove("A") : 리스트 내에 A를 삭제한다. (순서가 앞쪽 부터 삭제되며, 여러번 하기 위해서는 반복문 필요)

del _____[ ] : 특정 위치를 삭제해줌 , 범위 삭제도 가능하다.

_____.clear() : 리스트 내의 모든 항목 삭제 

 

# 출력결과
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
[5, 4, 3, 2]
[5, 4, 2]
[2]
[]

 

 

(5) 기타 

num_list = [1,2,5,3,4]
print(num_list)

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

#리스트 확장도 가능함.
num_list.extend(mix_list)
print(num_list)

리스트는 문자열, 정수, boolean 등 다양한 자료형과 함께 사용이 가능하고, 확장도 가능하다.

 

# 출력결과

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

데이터 사전
대부분 읽기 전용으로 제공되는 테이블 및 뷰들의 집합.
데이터베이스의 전반에 대한 정보를 제공하는 것

(1) 기본 구조

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

print(cabinet[100])

 

#출력 결과
유재석
유재석
김태호

 

(2) 예외

cabinet = {3:"유재석", 100:"김태호"}

print(cabinet.get(3))
# print(cabinet[5]) # 오류가 발생하면 프로그램이 종료됨.
print(cabinet.get(5)) # 값이 없으면 None을 출력하고 개속 진행됨.

print(cabinet.get(5, "사용가능")) #만약 값이 없다면 5번에 다음 문자열을 삽입

print(3 in cabinet) #리스트 안에 있는지 확인함 True
print(6 in cabinet) #False

get

get없이 호출 할 경우 오류가 발생하면 프로그램이 종료됨.

get이 있으면 None이 출력되고 계속 진행된다.

get(3, "사용가능") 현재 3번은 유재석이다. 이때 유재석이 출력된다. 그런데 만약 3에 유재석이 없다면,

사용 가능이란 문자열이 들어가게 된다.

 

in

( _ in _______ ) 문을 통해서 값이 있는지 없는지 확인 가능하다.

 

# 출력 결과
유재석
None
사용가능
True
False

 

(3) 함수

#스트링도 가능함
cabinet = {"A-3":"유재석","B-100":"김태호"}
print(cabinet["A-3"])
print(cabinet["B-100"])

#새 손님
print(cabinet)
cabinet["A-3"] = "김종국"
cabinet["C-20"] = "조세호"
print(cabinet)

#간 손님
del cabinet["A-3"]
print(cabinet)

#key 들만 출력
print(cabinet.keys())

#value 들만 출력
print(cabinet.values())

# key,value
print(cabinet.items())

#다 나감.
cabinet.clear()
print(cabinet)

숫자 형식이 아닌 문자열 형식으로 데이터 사전 정의도 가능하다.

3 : 유재석  -> A-3 : 유재석 (A-3을 호출 하면 유재석이 호출됨)

추가도 가능하다.

 

del ______[ ] : [ ]안에 조건에 부합하는 데이터를 삭제함.

______.key() : key들만 출력 (위의 예제에서 A-3, B-100, C-20  key 이다.)

______.values() : 값들을 출력 (위의 예제에서는 유재석, 김태호, 조세호, 김종국이 값이다.)

______.items() : key 와 values를 같이 출력한다.

______.clear() : 데이터를 모두 지운다.

 

# 출력 결과
유재석
김태호
{'A-3': '유재석', 'B-100': '김태호'}
{'A-3': '김종국', 'B-100': '김태호', 'C-20': '조세호'}
{'B-100': '김태호', 'C-20': '조세호'}
dict_keys(['B-100', 'C-20'])
dict_values(['김태호', '조세호'])
dict_items([('B-100', '김태호'), ('C-20', '조세호')])
{}

  

 


튜플
사전적 의미 : 셀 수 있는 수량의 순서 있는 열거
선언한 값을 고유하게 갖는다. (추가, 삭제, 변경이 불가능 하다.)

기본 구조

# 튜플은 추가가 불가함.
menu = ("돈까스", "치즈까스") #()를 통해서 튜플을 선언
print(menu[0])
print(menu[1])

# menu.add("생선까스") 오류발생
menu2 = "돈까스", "생선까스", "돈까스"
print(f"menu2 : {menu2}")

print(1 in menu2)
print(menu2.count("돈까스"))


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

리스트는 [] 를 데이터 사전은 {키 : 값}을 튜플은 ()을 사용한다. [튜플은 () 생략 가능]

 

튜플은 추가,삭제,변경이 불가능하여 오류를 발생시킨다.

 

in을 통해 값이 있는지 확인이 가능하다.

 

count를 통해 찾고자하는 값이 몇개 있는지 확인 가능하다.

 

튜플로 한번에 매개변수를 선언하는 것도 가능하다.

 

# 출력결과
돈까스
치즈까스
menu2 : ('돈까스', '생선까스', '돈까스')
False
2
김종국 20 코딩

 

튜플 함수

shuffle( 튜플 )
sample( 튜플 , 개수)

shuffle(T) : T 안의 값을 무작위로 바꿔준다.

sample( T , n ) : T 안의 값 중에서 무작위로 값을 n개 뽑아준다.


set (집합)
중복이 안되고 순서가 없다.
my_set = {1,2,3,3,3}
print(my_set)

키와 값이 없이 {}만 사용

중복이 불가능 하여 3은 한번만 출력된다.

# 출력결과
{1, 2, 3}

 

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

# 교집합 (java와 python을 모두 할 수 있는 사람)
print(java & python)
print(java.intersection(python))

# 합집합 (java를 하거나 python을 하는 사람)
print(java | python)
print(java.union(python)) #순서가 보장되지 않아 어디에 출력될지는 모름

# 차집합 (java는 하는데 python은 못하는 사람)
print(java - python)
print(java.difference(python))

# python 할 줄 아는사람이 늘어남
python.add("김태호")
print(python)

# java를 잊어버림 
java.remove("김태호")
print(java)

{}을 통해서 set을 정의 할 수 있지만, 리스트 []를 만들고 set을 선언하여 집합을 만들 수 있다.

 

교집합

A&B , A.intersection(B) : A와 B가 겹치는 값

 

합집합

A | B , A.union(B) : A의 값과 B의 값 모두를 합친다. (순서는 보장되지 않는다.)

 

차집합

A - B, A.difference(B) : A의 값중 B와 포함된 값(교집합)을 빼준다.

 

____.add() 를 통해서 추가하고, _____.remove() 를 통해서 제거해준다.

# 출력결과
{'유재석'}
{'유재석'}
{'유재석', '김태호', '박명수', '양세형'}
{'유재석', '김태호', '박명수', '양세형'}
{'김태호', '양세형'}
{'김태호', '양세형'}
{'유재석', '김태호', '박명수'}
{'유재석', '양세형'}

자료구조 변경
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)) #{}

리스트, 튜플, 집합을 자유롭게 구조를 변경 시킬 수 있다.

처음 선언된 구조는 집합이지만,  list() tuple() set()을 이용해 리스트, 튜플, 집합으로 변환 시켜줄 수 있으며,

print(type()) 을 이용하면 현재 타입을 알 수 있다.

 

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

리스트는 [ ]  집합은 { } 튜플은 ( ) 란 것을 잊지 말자.

'Python' 카테고리의 다른 글

9. 반복문 (for / while)  (0) 2022.05.05
8. 조건문(분기)  (0) 2022.05.05
6. 탈출문자  (0) 2022.05.03
5. 문자열(슬라이싱/문자열 처리함수)  (0) 2022.05.02
4. 랜덤 함수  (0) 2022.05.02
Comments