2022-01-20-Python_DataType(2)

yyj·2022년 1월 27일
0

.

목록 보기
3/21

Python buit - in Data Type

3. Text Sequence Type

- class str : 문자열 의미

  • 문자열

    • 다른언어(C, Java)에서 문자 => 1글자 => 즉 'a' (Character)
    • 문자열 => 1글자를 포함한 여러글자 => 즉 "aaa", "a" (Strig)

  • Python은 문자와 문자열을 구분하지 않음!

  • Python은 문자개념이 없음, 그냥 몽땅 다 문자열

  • "" 또는 '' 두 표현이 같은 표현이기에 맘에 드는걸 골라 사용하면 됨

  • 일반적으로 문자열을 표현할때는 ''을 관용적으로 이용

a = '소리없는 아우성'
b = 'hello World'
print(type(a)

결과
<class ' str'>

  • [+] => 숫자에 대해서는 더하기 연산
  • => list에 대해서는 concatenation
a = 'Hello'
b = 'World'
result = a + b
print(result)

결과
Hello World



  • indexing, slicing이 가능하다
a = 'this is a sample text'
print(a[0])
print(a[-1])
print(a[2:6])
print('sam' in a)
print('haha' not in a)

#결과
t
t              # (마지막 t)
is i           # 공백도 하나의 문자열로 취급
True
True           # not in은 in의 반대 (포함되어 있지 않은가?를 의미)
 a = 'this is a sample text'
 result = a.upper()         # upper()메서드는 변수안의 문자열을 대문자로 변경해준다
 print(result)

THIS IS A SAMPLE TEXT 출력됨



  • 위의 예제처럼 상당히 많은 기능(메서드)을 가지고 있음
  • 필수적인 기능 몇가지만 알아보자!
a = 'show me the money'
1. 이 문자열의 길이는?
print(len(a))        # 18출력됨    // 이 함수는 size, 즉 length의 약자로 길이를 알려줌
2. 문자열의 앞뒤 공백을 제거하려면 어떻게 해야하나요?
print(a.strip())     # 문자열의 앞 뒤의 공백을 제거한 나머지 문자열을 가져옴!
3. 문자열중 일부 문자열을 다른 문자열로 변경하려면 어떻게 해야하나요?
- 'money'를 'code'로 변경한다고 치자
print(a.replace('money' , 'code'))      # money라는 문자열을 code로 바꿈
4. 문자열의 일부분을 치환하는 방법
num_banana = 20
num_apple = 7
a = '나는 바나나 {}개 가지고 있고 사과를 {}개 가지고 있어요!'
result = a.format(num_banana, num_apple)

print(result)           # 나는 바나나 20개 가지고 있고 사과를 7개 가지고 있어요!

print('바나나 개수 : {}'.format(num_banana))  # 바나나 개수 : 20
- 출력하고 싶은 문자열의 문자를 변경하고 싶다면 중괄호를 사용하여 바꾸고 싶은 범위를 설정하고
- format() 메소드를 이용하여 변경



4. Mapping Type

- class dict

dictionary (딕셔너리)


  • dic
  • dictionary를 만들기 위해서 사용하는 class => class dict

    - literal로 dictionary는 어떻게 표현하나?
    • list => []
    • tuple => ()
    • dict => {}

  • {}를 이용하고 키와 value의 쌍을 저장하는 집합 자료구조
  • 순서가 존재하지 않음!
  • 그러면 어떻게 여러개의 데이터를 저장하는가?

a{'name' : '홍길동', 'age' : 20, 'addr' " '서울'} 
print(a)

{'name' : '홍길동', 'age' : 20, 'addr' " '서울'} 출력

  • 추가적으로 데이터를 저장하려면 어떻게 하나?
a['mobile']  = '01033334444'
print(a)

결과 
 {'name' : '홍길동', 'age' : 20, 'addr' " '서울', 'mobile' : '01033334444'} 출력
  • dictionary안의 값을 조회하려면
print(a['name'])    # 홍길동 출력됨
  • 값을 수정하려면
a['age'] = 30
print(a)            #  {'name' : '홍길동', 'age' : 30, 'addr' " '서울', 'mobile' :'01033334444'}

  • 그럼 다음과 같이 입력하면 어떻게 될까?
a = {'name' : '아이유', 'age' : 20, 'age' : 30}
   #의미론적으로는 맞지 않지만 코드 에러는 일어나지 않는다!
   
print(a) # 같은 키 값은 하나만 출력되고 나머지는 무시된다!
#{'name' : '아이유', 'age' : 20}이 출력됨
  
a = {'name' : '홍길동', 'age' : 20}
a[10] = '서울'    # key 값을 정수로 사용하면 되나?
print(a)         # {'name': '홍길동', 'age': 20, 10: '서울'}   가능함
a = {'name' : '홍길동', ['address'] : '서울'}        # Error key 값으로 list 사용 불가!
a = {'name' : '홍길동', ('address',) : '서울'}       # key 값으로 tuple은 사용가능!

                           => 키 값은 변하면 안되기 때문에 list는 불가 tuple은 가능!
a = {'name' : '아이유', 'age' : 20}

# 모든 key값을 얻어내는 기능(메소드)
print(a.keys())             #   dict_keys(['name', 'age'])
                            #   만약 진짜 list라면 => ['name', 'age'] 출력되야 함
                            
# 모든 value값을 얻어내는 기능(메소드)
print(a.values())           #   dict_values(['아이유', 20])

# 모든 key와 value의 쌍을 얻어내는 기능(메소드)
print(a.items())            #   dict_items([('name', '아이유'), ('age', 20)])
                            #   key와 value를 tuple로 만들어서 리스트처럼 생성
                            
print(a)                    # {'name' : '아이유', 'age' : 20}
a.clear()                   # 몽땅 삭제
print(a)                    # {}



5. Set type

  • clas set

  • set은 주머니 개념

  • 여러개의 데이터를 저장

  • 순서가 없음!

  • 키의 개념이 없음 ! (값만 저장함)

  • set 안에서는 중복을 허용하지 않음 ! (set의 가장 큰 특징)

  • literal => {} (dicionary와 set은 둘다 {} 사용)

a = {'홍길동', '아이유', 20, '서울'}
print(a)

{'아이유', 20, '서울', '홍길동'} 출력됨

print(type(a))으로 찍어보면 <class 'set'>이 출력됨

a = {'홍길동', '아이유', 20, '서울', '서울', '홍길동', '아이유'}
print(a)
# {'아이유', 20, '서울', '홍길동'} 중복 값이 사라짐
  • set의 연산 => 합집합(Union), 교집합(intersection), 차집합(difference)
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7)]
  • 합집합(Union)
result = a | b
print(result)
# {1, 2, 3, 4, 5, 6, 7} 출력   중복값 사라짐!
  • 교집합(intersection)
restult = a & b
print(result)
# {3, 4, 5} 출력!
  • 차집합(difference)
result = a - b
print(result)
# {1, 2} 출력!
  • set의 데이터를 추가 하는 방법
    • .add를 이용한다!
a = {1, 2, 3}
a.add(6)
print(a)
# {1, 2, 3 ,6} 출력

a.add('안녕')
print(a)
# {1, 2, 3 ,6, '안녕'} 출력

a.add((45,)
print(a)
# {1, 2, 3 ,6, '안녕'. (45,)} 출력

a.add([1,2,3,4])
a.add({'name' : '홍길동'})
a.add({6, 7, 8})
# 3개다 Error // 즉, 값이 고정되어 있는 값들만 들어갈 수 있음!!
a = {1, 2, 3}                     # add는 1개만 추가, update는 여러개 추가
a. update([6, 7, 8])		  # 인자로 일반적으로 리스트가 옴
print(a)
# {1, 2, 3, 6, 7, 8}

# 특정 요소 삭제
a.remove(2)
print(a)
# {1, 3, 6, 7, 8} 출력

6. Bool Type

  • class bool (논리 타입)

- True, False

  • 연산자는 and, or, not 연산
print(True and False)    # False
print(True and True)     # True
print(True or False)     # True
print(not True)          # False

print(type(True))        # <class 'bool'>
  • 기억해야할 사항
    • 다음의 값들은 모두 False로 간주됨

      1. 빈 문자열 ('')
      2. [], (), {} 리스트 튜플 딕트 안에 아무것도 없으면 논리값 반환시 False로 변환
      3. 숫자 0만 False로 취급
      4. None

      = 이렇게 4가지의 경우 출력시 False로 간주됨


Control statement(제어문)

if, for, while

- 제어문 if

  • 논리값을 기반으로 실행코드의 분기를 시키는 제어문
  • Python은 코드 블럭을 표현하기 위해 {}를 사용 안함!
  • Python은 코드 블럭을 표현하기 위해 identation(들여쓰기)를 사용 - 4칸 들여쓰기
if 20 > 30:
    print('Hello")
else:
    print('haha')
  • 20이 30보다 작음으로 else문 내부의 문장이 실행되어 'haha'가 출력된다!

- for statement (반복문)

  • 반복할 횟수를 일반적으로 알고 있을때 (10번반복!)
  • 내가 가지고 있는 자료구조의 데이터 수만큰 반복할 때 사용한다!
a = [1, 2, 3, 4, 5]

for kk in a:
    print(kk)
#결과
1
2
3
4
5

for kk in range(3):
    print('안녕')
#결과
안녕
안녕
안녕

- while statement (반복문)

  • 조건에 따라서 반복을 지속하고 싶을 때
a = 0
while a < 4:
    print('히히')
    a = a + 1
print('끝났어요!')
# 결과
히히
히히
히히
끝났어요!
  • break 구문
  • 반복문에서 사용되고 break를 만나면 가장 가까운 반복문을 탈출!
a = 0
while True:
    print('히히')
    a = a + 1
    if a == 5:
        break
print('끝났어요!')
# 결과
히히
히히
히히
히히
히히
끝났어요!
profile
초보개발자

0개의 댓글