개발일기 [Python 파이썬]

[Python tuple & set] 파이썬튜플 & 집합

neullo 2024. 2. 19. 21:31

보통 이렇게 a라는 이름의 박스 안에 '사과, 수박, 키위'가 있다고 알려주고, a박스 안에 무엇이 있는지 보여줘-라고 프린트하면 리스트에 모든 내용이 나열된다.  만약 여기서 첫 번째 내용물인 '사과'만 출력해 달라고 하고 싶다면 a 박스 내용 출력을 요청하는 print 옆에 사과가 몇 번째에 들어 있는지 확인한 후 첫 번째의 경우 [0]을 넣으면 '사과'만 출력된다.  

a = ['사과', '수박' ,'키위']
print(a[0])

 

 

만약 a라는 박스 안에서 두 번째 위치한 '수박'을 '석류'로 바꾸고 싶다면 (1) 리스트 나열 후, (3) 프린트 출력 전, (2) 중간에 a박스 속 1번째 위치한 수박은 석류야라는 식으로 바꾸어주면 된다. 여기서 주의해야 할 점은 어느 위치에 있는지를 알려주는 박스는 [ 숫자 ]를 써야 한다는 것이다. 

a[1] = '석류'
a = ['사과', '수박' ,'키위']
a[1] = '석류'
print(a)

 

그러면 ['사과', '석류', '키위']라는 결과를 얻는다.


튜플 (tuple) : 리스트와 비슷하지만 불변형이라 한번 선언하면 수정이 불가하다.

튜플은 리스트와 비슷하지만 불변인 자료형으로 순서가 존재! 위에 리스트 나열 때 []를 사용한 것과 다르게 ()를 사용한다. 위와 똑같은 내용에 a = ['사과', '수박' , '키위']를 a = ('사과', '수박' , '키위')로 바꾸어 똑같이 프린트하면 똑같은 결괏값이 나온다.

a = ('사과', '수박' ,'키위')
print(a)
a[1] = '석류'

하지만 여기에 똑같이 '석류'를 더하려고 하면, 에러가 나서 '수박'을 '석류'로 바꾸는 작업은 불가하다.

딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 쓰인다고 한다.

a_dict = [('bob','24'),('john','29'),('smith','30')]

 

집합 (set)

좋은 점: 중복이 제거된다.

집합은 말 그대로 '집합'을 구현하는 방법.

a라는 박스 안에 여러 숫자가 들어 있다면 a_set이라는 변수를 만들어서 리스트 안에 내용 (a)을 set 안에 넣어주면 집합이 만들어진다.

 

 

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]
a_set = set(a)
print(a_set)

 

set 세트를 프린트하면 여러 숫자 중에 반복되지 않도록 {1, 2, 3, 4, 5}만 출력된다.

a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

 

교집합 / 합집합 / 차집합

a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

a_set = set(a)
b_set = set(b)


print(a_set & b_set)  # 교집합. a & b에 둘다 있는 것 {사과, 참외} 가 나올 것
print(a_set | b_set)  # 합집합. 여기서 | 는 엔터 위에 있는 것으로 결과는 {'사과', '감', '토마토', '수박', '청포도', '참외', '딸기', '멜론'}

 

 

 

✍️ A가 들은 수업 중, B가 듣지 않은 수업을 찾아보기

  • student_a = ['물리 2', '국어', '수학 1', '음악', '화학 1', '화학 2', '체육'] student_b = ['물리 1', '수학 1', '미술', '화학 2', '체육']
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

set_a = set(student_a) 
set_b = set(student_b) 

print(set_a - set_b)

a와 b의 '차집합' 구한다고 하면 이미 중복되는 건 세트에서 빼주었기 때문에, 그저 a - b 세트 해주면 된다.

그러면 {'화학 1', '물리 2', '음악', '국어'}이라는 결과가 가온다.

 

print(set_a - set_b)

 

 

 

끝!