[Python] 파이썬 정리_2

seonyoung53·2022년 4월 25일

Python

목록 보기
2/3

파이썬 프로그래밍의 기초, 자료형(2) - 튜플, 딕셔너리, 집합, 불, 변수

튜플 (소괄호)

  • 변경 불가능, 고정 된 값
  • 튜플 값 변경 시 오류 발생
  • 인덱싱, 슬라이싱 가능

튜플은 변하지 않는다!

딕셔너리 (Hash, Map, Object, Jason)

  • 키를 가지고 사전 검색하듯이 키로 검색해서 값을 볼 수 있다.
  • Key와 Value로 이루어져있다.
  • Key가 중복 되면 안된다.
  • Key가 핵심이다.

1. 딕셔너리 쌍 추가/ 삭제

a = {'age': 22}
a['name'] = "김제니"
print(a)

del a['age']
print(a)

2. 딕셔너리에서 Key, Value, Items 구하기

a = {1: '지수', 2: '제니', 3: '리사'}

print(a.keys())
print(a.values())
print(a.items()) # 반복문에서 많이 쓰임

for v in a.values():
    print(v)

for k, v in a.items():
    print("키: " + str(k))
    print("값: " + v)

a = {1: '지수', 2: '제니', 3: '리사'}
print(a[4]) # 4라는 키가 없어서 오류 출력
print(a.get(4, '없음')) # 4라는 키가 없을 때 '없음' 출력

3. 해당 Key가 딕셔너리 안에 있는지 조사하기(in)

a = {1: '지수', 2: '제니', 3: '리사'}

print(1 in a) # true
print(4 in a) # false

집합 자료형

  • 집합과 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형
  • 중복을 허용하지 않는다.
  • 순서가 없다(Unordered).
s1 = set([1,2,3])
# s1 = {1, 2, 3}
print(s1)

l = [1,2,2,3,3]
newList = list(set(l))
print(newList) # 중복된 요소 제거하여 출력

s2 = set("Hello")
print(s2)

1. 교집합

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
# s1과 s2의 교집합 출력
print(s1.intersection(s2)) # {4, 5, 6}
print(s1 & s2) # {4, 5, 6}

2. 합집합

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
# s1과 s2의 중복없이 합집합 출력
print(s1.union(s2)) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}

3. 차집합

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
# s1과 s2의 차집합 출력
print(s1 - s2) # {1, 2, 3}
print(s2.difference(s1)) # {8, 9, 7}

4. 집합 추가, 삭제

  • add()
  • update([ ]) : 여러개 추가
  • remove : 삭제

불 자료형 (불리언 자료형)

  • 값이 있으면 참 없으면 거짓으로 봄
a = [1, 2, 3, 4]
while a:
    a.pop() # 마지막 요소를 제거한 나머지가 남음
    print(a) # 전부 제거되면 a는 빈 리스트[]가 됨으로 반복문 정지

변수

a = [1, 2, 3]
b = a # b는 a의 주소를 받음
a[1] = 4

print(a) # [1, 4, 3]
print(b) # [1, 4, 3] > a와 같이 바뀜
print(id(a)) # 1730212078472
print(id(b)) # 1730212078472 > 주소가 a와 같음
# a, b의 주소가 같으므로 같은 곳을 바라 보고 있음
print(a is b) # a가 b와 같은 곳을 바라보고 있느냐 : True
# 같은 주소를 갖는 게 아닌 값을 복사할 때
b = a[:] # 슬라이싱을 이용해서 넣을 때는 값 자체만 복사돼서 들어감

from copy import copy
a = [1, 2, 3]
b = copy(a) # b = a[:] 와 같은 개념
a[1] = 4

print(a) # [1, 4, 3]
print(b) # [1, 2, 3] > 바뀌지 않음
  • 변수의 값을 서로 바꿀 때
a = 3
b = 5

a,b = b,a
print(a) # 5
print(b) # 3

연습문제2

Q8. (1,2,3) 튜플에 값 4를 추가하여 (1,2,3,4)를 만들어 출력해 보자.

a = (1, 2, 3)
a = a + (4,)
print(a)

a 튜플에 (4, )라는 튜플을 더하면 된다. 단, 이때 만들어지는 a + (4, )의 결과는 a 값이 변경되는 것이 아니라(튜플은 그 값을 변경할 수 없다) 새로운 튜플이 생성되고 그 값이 a 변수에 대입되는 것임에 유념하자.

Q10. 딕셔너리 a에서 'B'에 해당되는 값을 추출해 보자.

a = {'A':90, 'B':80, 'C':70}
print(a['B']) # 80 출력

or 

result = a.pop('B')
print(result) # 80 출력

Q11. a 리스트에서 중복된 숫자들을 제거해 보자.

a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
aSet = set(a) # a 리스트를 집합자료형으로 변환
b = list(aSet) # 집합자료형을 리스트 자료형으로 다시 변환
print(b)

리스트 자료형이 집합 자료형으로 변환되면서 중복된 값들은 사라지게 된다. 이와 같은 성질을 사용하면 리스트 내에 중복된 값을 쉽게 제거할 수 있다.

profile
비비디바비디부

0개의 댓글