데이터 유형
4. 딕셔너리
모든 원소 삭제 : 식별자.clear()
d1 = {'name' : '홍길동'}
d1['age'] = 20
d1['phone'] = '01041259791'
print(d1)
d1.clear()
print(d1)
5. 집합(set)
순서없음. 중복값 저장이 허용되지 않음
문법) 식별자 = {값1, 값2, 값3, ...} / 딕셔너리와 차이점은 딕셔너리는 키:값 쌍으로 이루어져 있음.
식별자 = set(시퀀스유형) / 시퀀스 유형에 range도 포함
시퀀스의 원소접근 방식([인덱스])을 사용할 수 없음.(식별자[3] x)
-> 개별 원소를 사용하려면 리스트나 튜플로 변형하여 사용해야 한다.
식별자 = list(집합) 또는 식별자 = tuple(집합)
관련함수
1) 1개 추가 : add(v)
2) 여러개 추가 : update([v1, v2, v3, v4, ......])
3) 원소 제거 : remove(v)
집합연산
1) 교집합 : &, 두 집합의 공통 원소 구하기, 집합1 & 집합2, 집합1.intersection(집합2)
2) 합집합 : | , 두 집합의 모든 원소 구하기, 집합1 | 집합2, 집합1.union(집합2)
3) 차집합 : - , 공통 원소를 뺀 선행 집합 원소(방향성이 중요), 집합1 - 집합2, 집합1.difference(집합2)
# set 순서가 중요하지 않음, 중복 x
s1 = {1,2,3,4,5}
print(s1)
s2 = set([1,2,3,4])
print(s2)
# 문자 하나하나를 원소로 사용 {'l', 'h', 'e', 'o'}
s3 = set('hello')
print(s3)
# print(s3[0]) 오류, 리스트나 튜플로 변환하여 사용
l1 = list(s3)
print(l1[0])
# 관련 함수
s2.add(6)
print(s2)
s2.update([7, 9, 10, 35])
print(s2)
s2.remove(35)
print(s2)
print(8 in s2)
print(10 in s2)
print(5 not in s2)
# 집합 연산
s4 = {1, 2, 3, 4, 5, 6}
s5 = {4, 5, 6, 7, 8, 9}
s6 = s4 & s5 # 교집합
print(s4, s5)
print(s6) # {4, 5, 6}
s7 = s4 | s5 # 합집합
print(s7) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
s8 = s4 - s5 # 차집합
s9 = s5 - s4
print(s8) # {1, 2, 3}
print(s9) # {8, 9, 7}
TypeError: 'set' object is not subscriptable
파이썬 연산자
1. 산술연산자 - +, -, * , /, %, **, //
/ : 결과값은 실수, 5 / 2 => 2.5
// : 결과로 몫을 구하는 연산자, 5 // 2 => 2
** : 제곱, 2 ** 2 => 4
2. 할당(대입) 연산자 : =, +=, -= 등 모든 산술연산자(총 8가지)
3. 비교 연산자 : ==, !=, <, >, <=, >=
4. 논리 연산자: and, or, not
5. 항등 연산자(identity) : is, is not
a is b, a is not b
같은 메모리 주소인지 비교, 파이썬의 데이터는 모두 객체화하여 사용
x = 10 => x는 변수가 아니라 객체다. instance
6. 멤버 연산자 : in, not in
7. 비트 연산자 : &(and) 둘다 1, |(or) 둘다 0, ^(xor) 둘이 서로 다를 때 1, ~(not) 반전, <<, >>, data = bit 시퀀스
각 비트를 따로따로 연산에 활용(하드웨어 제어)
자바는 equal로 비교 / 파이썬은 is, is not으로 비교
* 얕은 복사 shallow copy
a = [1, 2, 3, 4]
a = c
c = a의 주소값만 복사, 하나의 리스트를 공유
* 깊은 복사 deep copy : 실제 데이터를 복사
a = [1, 2, 3, 4]
b = [1, 2, 3, 4]
제어문 - if, while, for
파이썬의 블록 구조
파이썬은 '들여쓰기'로 블록의 범위를 지정한다.(권장 공백 4)
: (콜론) - 블록의 시작을 나타냄, 제어문 범위나 함수 정의에서 사용
1. if
형식) if 조건문:
수행문장1
수행문장2
.........
else:
수행문장a
수행문장b
다중 조건을 처리하는 키워드 : elif
형식) if 조건식1:
수행문장...
elif 조건식2:
수행문장....
elif 조건식3:
수행문장....
else:
수행문장....
else 블록이나 두번째 이후의 elif 는 없을 수도 있다.
조건부 표현식
변수 = 참인 경우의 값 if 조건식 else 거짓인 경우 값
다른 언어처럼 중첩하여 사용할 수 있다.(들여쓰기 신경쓰기!!)
if 조건식:
if 하위 조건식:
수행문장....
else:
수행문장....
else:
수행문장 또는 if 문장....
score = int(input('점수 = '))
# 조건부 표현식(삼항연산자와 유사한 방식)
# m = (score >= 60) ? '합격' : '불합격';
m = '합격입니다.' if score >= 60 else '불합격입니다.'
print(m)
# if
if score >= 60:
print("합격입니다~")
else:
print("불합격입니다!")
print("공부하세요!") # 60이상일 경우에도 출력
# 다중 조건 elif
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print('D')
else:
print('F')
ValueError: invalid literal for int() with base 10
'공부기록 > Python' 카테고리의 다른 글
6월 12일 (2) python - 모듈 (0) | 2023.06.12 |
---|---|
6월 12일 (1) python - 함수 (1) | 2023.06.12 |
6월 9일 (2) python - 제어문2 (0) | 2023.06.09 |
6월 8일 (2) python - 데이터 유형 (0) | 2023.06.08 |
6월 8일 (1) python - 설치, 문법 (0) | 2023.06.08 |