본문 바로가기

MLOps 개발자 양성과정/python

[Day-2] 변수와 자료형

<목차>

1. 변수

2. 문자열

3. 리스트

4. 튜플

5. 세트

6. 딕셔너리


01. 변수

● 데이터를 변수에 할당하기 (변수명 = data)

  : 변수에 자료를 할당하고 변수를 불러 값을 출력한다.(↔ 상수: 변하지 않음 (ex: PI π ))

    ※ 주의)  == 같다의 의미가 아님!   

 

 <변수명 설정 시 규칙>

① 변수 명은 문자, 숫자, 밑줄기호를 이용하여 만들 수 있다.
EX) a, book1, my_student2, MyDog, _my_number
② 숫자로 시작할 수 없다. 5징어(X)
③대소문자를 구별함 Money != money
④공백은 불가 world cup (x)
⑤ 밑줄 이외의 기호는 불가 (%, & 등)
⑥ 예약어는 사용 불가 (True, False, and, or 등)

 

 

 

02. 문자열(string)

● 문자열 만들기

  - 큰따옴표(" ") or 작은따옴표( ' ') 사용

  - type() > str

 

 

● 문자열 전체 삼중따옴표로 감싸기

  - 문자열에 따옴표 모두 포함하고 싶거나 문장을 여러 행 넣고 싶을 때 사용

long_string1 = '''[삼중 작은따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다.''' 

long_string2 = """[삼중 큰따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다.""" 

print(long_string1)
print(long_string2)

> [삼중 작은따옴표를 사용한 예]
  파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
  큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다.
> [삼중 큰따옴표를 사용한 예]
  파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
  큰따옴표(")와 작은따옴표(')도 입력할 수 있습니다.

 

 

● 문자열 다루기

  - 문자열 더하기 : 문자열끼리 연결해 하나로 만든다.

  - 문자열 곱하기 :  문자열을 곱한 만큼 반복한다.

a = 'Enjoy '
b = 'python!'
c = a + b
print(c)
print(c * 3)

> Enjoy python!
> Enjoy python!Enjoy python!Enjoy python!

 

 

 

03. 리스트(list) [ ]

● 리스트 만들기

  : 데이터를 한꺼번에 처리하기 위해 묶어서 관리한다.

 

  - [ ] 대괄호 이용

  - 데이터 입력한 순서대로 지정 콤마(,) 로 구분

  - 데이터 타입 같지 않아도 됨

  - type() > list

student1 = [90,95,85,80] 
student1
> [90, 95, 85, 80]

type(student1)
> list

 

 

● 리스트 인덱스 값

  - 인덱스의 범위 o부터 n-1까지

  ※ 인덱스 값 0부터 시작함!! 

student1 = [90,95,85,80] 
student1[0] #첫 번째 항목 출력
> 90
student1[1] #두 번째 항목 출력
> 95
student1[-1] # 마지막 항목 출력
> 80

 

- 인덱스 값을 이용해 새로운 데이터를 할당

student1 = [90,95,85,80] 
student1[1] = 100 # 두 번째 항목에 새로운 데이터 할당
student1
> [90, 100, 85, 80]

 

 

● 리스트 다루기

  - 리스트 더하기 : 리스트를 연결한다.

list_con1= [1,2,3,4]
list_con2 = [5,6,7,8]
list_con = list_con1 + list_con2 # 리스트 연결
print(list_con)
> [1, 2, 3, 4, 5, 6, 7, 8]

 

- 리스트 곱하기 :  리스트를 곱한 수만큼 반복한다.

list_con1= [1,2,3,4]
list_con = list_con1 * 3 # 리스트 반복
print(list_con)
> [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

 

- 리스트 중 일부 항목 가져오기 : 리스트 [i_start, i_end:i_step]
    → 범위를 지정하면 i_start 부터 i_end -1 까지 리스트 반환(생략하면 0, 끝, 1로 간주한다.)

list_data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_data)
print(list_data[0:3])
print(list_data[4:8])
print(list_data[:3])
print(list_data[7:])
print(list_data[::2])

> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
> [0, 1, 2]
> [4, 5, 6, 7]
> [0, 1, 2]
> [7, 8, 9]
> [0, 2, 4, 6, 8]

 

  - 리스트에서 항목 삭제하기: del 리스트[i]

list_data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_data)
> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del list_data[6]
print(list_data)
> [0, 1, 2, 3, 4, 5, 7, 8, 9]

 

  -  리스트에서 항목의 존재 여부 확인하기 : 항목 in 리스트

    → bool 형태로 반환된다.

list_data1 = [1, 2, 3, 4, 5]
print(5 in list_data1)
print(6 in list_data1)

> True
> False

 

 

● 리스트 메서드 활용하기

리스트 메서드 설명 예시
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
append() 항목 하나를 맨 마지막에 추가 myFriends.append('Thomas')
> ['James', 'Robert', 'Lisa', 'Mary', 'Thomas']
insert() 특정 위치에 항목 하나를 삽입 myFriends.insert(1,'Paul')
> ['James', 'Paul', 'Robert', 'Lisa', 'Mary']
extend() 항목 여러 개를 맨 마지막에 추가 myFriends.extend('Laura'.'Betty')
> ['James', 'Robert', 'Lisa', 'Mary', 'Laura', 'Betty']
remove() 입력값과 첫 번째로 일치하는 항목을 삭제 myFriends.remove('James')
> ['Robert', 'Lisa', 'Mary']
pop() 마지막 항목을 제거한 후에 반환 myFriends.pop()
> ['James', 'Robert', 'Lisa']
index() 인자와 일치하는 첫 번째 항목의 위치를 반환 myFriends.index('Lisa')
> 2
count() 인자와 일치하는 항목의 개수를 반환 myFriends.count('Mary')
> 1
sort() 숫자나 문자열로 구성된 항목을 순방향으로 정렬 myFreinds.sort()
> ['James', 'Lisa', 'Mary', 'Robert']
reverse() 항목을 끝에서부터 역순으로 정렬 myFriends.reverse()
> ['Mary', 'Lisa', 'Robert', 'James']

 

 

 

04. 튜플(tuple) ()

● 튜플 만들기

  : 리스트와 유사하나 한 번 생성된 튜플은 요소를 변경하거나 삭제할 수 없음

 

  - 소괄호 이용()

  - 소괄호 없이도 생성가능

  - 인자가 하나만 있는 튜플 생성 시 반드시 쉼표 필요

  - type() > tuple

tuple1 = (1,2,3,4)
tuple1
> (1, 2, 3, 4)

type(tuple1)
> tuple

tuple2 = 5,6,7,8
print(tuple2)
> (5, 6, 7, 8)

tuple3 =(9,) #반드시 쉼표 필요
tuple4 = 10,
tuple3
tuple4
> (9,)
> (10,)

 

● 튜플 다루기

  - 변경되지 않는 메서드 리스트는 사용가능

    ex) index(), count()

 

 

05. 세트(set) { }

● 세트 만들기

  : 수학의 집합의 개념을 세트를 통해 사용가능

 

  - {중괄호}로 표기

  - 교집합, 합집합, 차집합 구할 수 있음

  - 중복을 허용하지 않음

  - type() > set 

 

 

● 교집합, 합집합, 차집합 구하기

A = {1, 2, 3, 4, 5}         # Set A
B = {4, 5, 6, 7, 8, 9, 10}  # Set B
A.intersection(B)  # 집합 A에 대한 집합 B의 교집합(A∩B)
A.union(B) # 집합 A에 대한 집합 B의 합집합(A∪B)
A.difference(B) # 집합 A에 대한 집합 B의 차집합(A-B)

> {4, 5}
> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
> {1, 2, 3,}
A = {1, 2, 3, 4, 5}         # Set A
B = {4, 5, 6, 7, 8, 9, 10}  # Set B
A & B  # 집합 A에 대한 집합 B의 교집합(A∩B)
A | B  # 집합 A에 대한 집합 B의 합집합(A∪B)
A - B  # 집합 A에 대한 집합 B의 차집합(A-B)

> {4, 5}
> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
> {1, 2, 3,}

 

※ 리스트, 튜플 세트 간 타입 변화가 가능하다

 

 

 

 

06.  딕셔너리(dict) { }

● 딕셔너리 만들기

  :  사전처럼 표제어만 찾으면 그에 대한 설명을 전부 확인할 수 있음

 

  - 중괄호{ }로 표현한다.

  - 키(key)와 값(value)으로 나누어져 있다.

  - 인덱스 값 대신 키 값을 사용한다.

  - 키는 숫자와 문자열이, 값은 어떤 데이터 형태로도 올 수 있다.

  - type() > dict

country_capital = {"영국":"런던", "프랑스":"파리", "스위스": "베른", "호주":"멜버른", "덴마크": "코펜하겐"}
country_capital
> {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른', '덴마크': '코펜하겐'}

type(country_capital)
> dict

country_capital["영국"] #값(value)구하기 키(key)값으로 호출한다
> '런던'
dict_data1 = {1:"버스", 3: "비행기", 4:"택시", 5: "자전거"}
dict_data1
> {1: '버스', 3: '비행기', 4: '택시', 5: '자전거'}


dict_data1[3] #위치를 뜻하는 index 3이 아님
> '비행기'
mixed_dict = {1:10, 'dict_num': {1:10, 2:20}, "dict_list_tuple": {"A":[11,12,13], "B":(21,22,23)}, "dict_string": "이것은 책입니다."}
mixed_dict #다양한 형태를 가질 수 있음
> {1: 10,
 'dict_num': {1: 10, 2: 20},
 'dict_list_tuple': {'A': [11, 12, 13], 'B': (21, 22, 23)},
 'dict_string': '이것은 책입니다.'}

 

 

● 딕셔너리 다루기

  - 데이터 추가/변경/삭제

country_capital = {"영국":"런던", "프랑스":"파리", "스위스": "베른", "호주":"멜버른", "덴마크": "코펜하겐"}
country_capital
> {"영국":"런던", "프랑스":"파리", "스위스": "베른", "호주":"멜버른", "덴마크": "코펜하겐"}

country_capital["독일"]= "베를린" #없는 키값을 넣으면 추가
country_capital
> {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른', '덴마크': '코펜하겐', '독일': '베를린'}

country_capital["호주"]= "캔버라" #이미 있는 키값을 넣으면 변경
country_capital
> {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '캔버라', '덴마크': '코펜하겐', '독일': '베를린'}

del country_capital["덴마크"] #del 딕셔너리데이터[key] 삭제
country_capital
> {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '캔버라', '독일': '베를린'}

 

 

● 딕셔너리 메서드 활용하기

딕셔너리 메서드 설명
keys() 키 전체를 리스트 형태로 반환
values() 값 전체를 리스트 형태로 반환
items() 키와 값의 쌍을 (키, 값)처럼 튜플 형태로 반환
update(dict_data2) 키와 값의 쌍을 (키, 값)처럼 튜플 형태로 반환
clear() 모든 항목을 삭제

 

fruit_code = {"사과":101, "배":102, "딸기":103, "포도":104, "바나나":105}

print(fruit_code.keys()) #딕셔너리에서 키 전체를 리스트 형태로 반환
> dict_keys(['사과', '배', '딸기', '포도', '바나나'])

print(fruit_code.keys()) #딕셔너리에서 키 전체를 리스트 형태로 반환
> dict_values([101, 102, 103, 104, 105])

print(fruit_code.items()) # 키와 값을 (키, 값)처럼 튜플 형태로 반환
> dict_items([('사과', 101), ('배', 102), ('딸기', 103), ('포도', 104), ('바나나', 105)])

#리스트로 변환
list(fruit_code.keys())
> ['사과', '배', '딸기', '포도', '바나나']
list(fruit_code.values())
> [101, 102, 103, 104, 105]
list(fruit_code.items())
> [('사과', 101), ('배', 102), ('딸기', 103), ('포도', 104), ('바나나', 105)]


fruit_code2 = {"오렌지":106, "수박":107}
fruit_code.update(fruit_code2) # 데이터 추가
fruit_code
> {'사과': 101, '배': 102, '딸기': 103, '포도': 104, '바나나': 105, '오렌지': 106, '수박': 107}

fruit_code2.clear() # 삭제
print(fruit_code2)
> {}
type(fruit_code2)
> dict