본문 바로가기
공부기록/Python

6월 9일 (1) python - 데이터 유형2, 연산자, 제어문

by project100 2023. 6. 9.

데이터 유형

 

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