[2일차] 변수와 자료형

2022. 12. 20. 17:17데이터 엔지니어링 과정/python

목차
1. 변수
2. 문자열
3. 리스트
4. 튜플
5. 세트
6. 딕셔너리

#  jupyter notebook 한 번에 쉽게 가게 설정

  • 시작에서 jupyter notebook ➡ 오른쪽 버튼 클릭 ➡ 자세히 ➡ 파일위치 열기

  • 파일이 열리면 jupyter notebook 오른쪽 버튼 ➡ 속성 클릭

  • 대상 에서 " " 사이에 사용하고자 하는 부분 적기

1. 변수

1. 데이터를 변수에 할당

: 변수에 자료를 할당하고, 변수를 불러 값을 출력한다

  변수 ↔ 상수(변하지 않는 수)

2. 변수 이름

  • 변수 명은 문자, 숫자, 밑줄 기호를 이용하여 만들 수 있다.
    ex) a, book1, my_student2, MyDog, _my_number
  • 숫자로 시작할 수 없다
    ex) 5징어 (x)
  • 대소문자를 구별한다,
    Money라는 변수와 money라는 변수는 다르다는 것!!
  • 공백은 불가
    ex) world cup (x)
    👂🏻보통 띄어쓰기 대신에 대문자를 사용한다.
  • 밑줄 이외의 기호(%, & 등)는 불가
  • 예약어(True, False, and, or...)는 사용 불가

2. 문자열

1. 형식

: "(큰 따옴표) 나 '(작은 따옴표)로 감싸면 된다.

2. type

: str

3. 삼중 따옴표 활용

  • 한번에 여러 줄 입력 가능
  • 문자열 안에 따옴표를 삽입할 수 있다!

3. 리스트

1. 리스트 만들기

#1번 학생의 국어, 영어, 수학, 과학 점수가 각각 90, 95, 85, 80
student1 = [90, 95, 85, 80]
  • 리스트 이름 = [항목0, 항목1, 항목2 ...]
    👂🏻 , (반점) 후 한 칸씩 띄우는 걸 추천!
  • 데이터를 한꺼번에 처리하기 위해 묶어놓으면 편하다.

2. 리스트의 타입 및 출력

pythontutor.com 참고

  • type은 list
  • list의 index는 0부터 시작
  • 출력방법
student1[0] #첫번째 항목 출력
student1[1] #두번째 항목 출력
student1[[-1] #마지막 항목 출력
  • 데이터 문자열도 가능하다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
  • 다른 타입끼리도 생성이 가능하다.
    • 규칙만 정확하게 지킨다면 가능!
mixedList = [0,2, 3.14, 'python', 'program', True, myFriends]
  • 새로운 데이터를 할당하려는 인덱스 넘버 지정 후 할당
student1[1] = 100 # 두 번째 항목에 새로운 데이터 할당
student1[-1] = 75 # 마지막 항목에 새로운 데이터 할당

3. 리스트 다루기

  • 더하기와 곱하기 : 리스트가 연결된다
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_start, i_end:i_step]
    • 각각 인덱스의 시작, 끝, 증가 범위를 지정하면i_start부터 i_end-1까지 리스트를 반환한다.
    • 리스트 반환을 생략하면 0, , 1 간주한다.
list_data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_data)
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list_data[0:3])
>>> [1, 2, 3]

print(list_data[4:8])
>>> [5, 6, 7, 8]

print(list_data[:3])
>>> [1, 2, 3]

print(list_data[7:])
>>> [8, 9]

print(list_data[::2])
>>> [1, 3, 5, 7, 9]

📍3의 배수만 출력되도록 하려면?

print(list_data[2::3])
  • 항목 삭제하기 : del
rint(list_data)
del list_data[6]
print(list_data)

>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [1, 2, 3, 4, 5, 6, 8, 9]
  • 항목의 존재 여부 확인하기
    🤦‍♀️제가 찾는 그 아이가 거기 있나요?
    • Bool로 반환함
      주의❗ 인덱스로 검색하는 게 아니라, 찾는 것 자체를 검색한다고 생각하자
list_data1 = [1, 2, 3, 4, 5]
print(5 in list_data1)
print(6 in list_data1)

>>> True
>>> False

 

4. 리스트 메서드 활용

자료형. 메서드 이름()

변수형. 메서드 이름()

👂🏻 함수나 메소드를 쓰겠다는 표현 : 온점(.)

  • .append(추가항목) 리스트에서 항목 하나를 마지막에 추가
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.append('Thomas')
print(myFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['James', 'Robert', 'Lisa', 'Mary', 'Thomas']
  • .insert(index, 삽입 항목) 리스트에서 특정 항목에 삽입
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.insert(1,'Paul')
print(myFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['James', 'Robert', 'Lisa', 'Mary', 'Laura', 'Betty']
  • .extend() 항목 여러 개를 마지막에 삽입 
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.extend(['Laura','Betty']) 
print(myFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['James', 'Robert', 'Lisa', 'Mary', 'Laura', 'Betty']
  • .pop() 마지막 항목 빼내기
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
popFriends = myFriends.pop() 
print(myFriends)
print(popFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['James', 'Robert', 'Lisa']
>>> Mary
  • .remove() 첫번째로 일치하는 항목을 리스트에서 제외
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.remove('James') 
print(myFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['Robert', 'Lisa', 'Mary']
  • .index() 해당 인자가 몇번째 index에 있는지 알려준다
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
indexFriend=myFriends.index('Lisa') 
print(indexFriend)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> 2
  • .count() 해당 인자가 몇 개 있는지 알려드려요
myFriends = ['James', 'Robert', 'Lisa', 'Mary','Lisa']
print(myFriends)
LisaCount = myFriends.count('Lisa')
print(LisaCount)

>>> ['James', 'Robert', 'Lisa', 'Mary', 'Lisa']
>>> 2
  • .sort() 순서대로 재배열
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.sort()
print(myFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['James', 'Lisa', 'Mary', 'Robert']
  • .reverse() 리스트 데이터 순서 거꾸로
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.reverse()
print(myFriends)

>>> ['James', 'Robert', 'Lisa', 'Mary']
>>> ['Mary', 'Lisa', 'Robert', 'James']

4. 튜플

1. 튜플 

  • 리스트와 유사한 항목
    • 리스트는 [대괄호]
    • 튜플은 (소괄호)
  • type = tuple

2. 튜플 생성

tuple1 = (1, 2, 3, 4)
tuple2 = 5, 6, 7, 8 
tuple3 = (9,)
tuple4 = 10,
  • tuple1 일반적인 경우 (소괄호) 이용
  • tuple2  소괄호 없이도 생성 가능
  • tuple3와 tuple4 인자가 1개밖에 없는 튜플 생성
    • 반드시 쉼표(', ') 필요하다
      🔎굳이 하나인데도 튜플로 정리하려는 이유는 뭘까?
           메모리의 용량 문제와 관련이 있다. 절대 변하지 않을 것 같으면 하나더라도 튜플로 관리하는 게 좋아!!
           그렇다고 절대 변하지 않을거야!!!!! 라고 생각되는 것들만 튜플로 분류하는 게 아니라, 
           중요한 것들도 튜플로 정의할 수 있다. 

3. 튜플 다루기

  • 변경 및 삭제가 불가능하다.

한 번 변경된 튜플의 요소는 변경 불가능
한 번 생성된 튜플 요소는 삭제되지 않음

  • 변경하지 않는 메서드는 리스트와 동일하게 사용이 가능하다.
    • ex) index, count,...
tuple6 = ('a', 'b', 'c', 'd', 'e', 'f')
indextuple = tuple6.index('c')
print(indextuple)

>>> 2
tuple7 = ('a', 'a', 'a', 'b', 'b', 'c', 'd')
tuple7.count('a')

>>> 3

 

5. 세트

1. 세트

set1 = {1, 2, 3}
set1a = {1, 2, 3, 3}
print(set1)
print(set1a)
  • {중괄호}로 표기
  • 중복을 허용하지 않는다.
    🔎왜 중복을 허용하지 않을까?
  • type 은 set

2. 세트의 교집합, 합집합, 차집합 구하기

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

A.intersection(B) 
>>> {4, 5}

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

A.union(B) 
>>> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

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

A.difference(B)
>>> {1, 2, 3}

A - B
>>> {1, 2, 3}

❗주의❗ 차집합의 경우, 교집합, 합집합과 달리 순서에 따라 출력값이 달라질 수 있다.

🤸🏻‍♀️ set를 집합의 구조와 같게 생각해도 되겠군!

 

3. 리스트, 튜플, 세트 변환

  • 우선 a를 list로 정의
a = [1, 2, 3, 4, 5]

type(a)
>>> list
  • tuple() 튜플로 변환
b = tuple(a)
b
>>> (1, 2, 3, 4, 5)

type(b)
>>> tuple
  • set() 세트로 변환
c = set(a)
c
>>> {1, 2, 3, 4, 5}

type(c)
>>> set
  • list() 리스트로 변환
list(b)
>>> [1, 2, 3, 4, 5]

list(c)
>>> [1, 2, 3, 4, 5]

 

6. 딕셔너리

1. 딕셔너리

country_capital = {"영국":"런던", "프랑스":"파리", "스위스":"베른", "호주":"멜버른","덴마크":"코펜하겐"}
  • 중괄호로 표현한다.
  • 키(key)와 값(value)으로 나누어져 있다.
    key는 단순하게!
  • index 대신 키 값을 사용한다.
  • type은 dict

2. 원하는 key, value 구하기

country_capital["영국"]

>>> '런던'
  • key와 value가 어떤 형태던 상관없다.
  • key로 검색해서 value가 도출된다.
    • 딕셔너리 이름[key]
dict_data1 = {1:"버스", 3: "비행기", 4:"택시", 5:"자전거"}
dict_data1
>>> {1: '버스', 3: '비행기', 4: '택시', 5: '자전거'}

dict_data1[3]
>>> '비행기'

3. 딕셔너리 다루기

country_capital = {"영국":"런던", "프랑스":"파리", "스위스":"베른", "호주":"멜버른","덴마크":"코펜하겐"}
  • 데이터 추가
    • 딕셔너리이름[key]=값
country_capital["독일"] = "베를린"
country_capital

>>> {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른', '덴마크': '코펜하겐', '독일': '베를린'}
  • 데이터 변경
    • 딕셔너리이름[key]=값
country_capital["호주"] = "캔버라"
country_capital

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

>>> {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '캔버라', '독일': '베를린'}
  • 딕셔너리 메서드 활용
    • 딕셔너리이름.keys() 딕셔너리에서 키 전체를 리스트 형태로 반환 
    • 딕셔너리이름.values() 딕셔너리에서 값 전체를 리스트 형태로 반환
    • 딕셔너리이름.items() 키와 값을 (키, 값)처럼 튜플 형태로 반환

  • 딕셔너리를 활용한 데이터 추가
    • update를 쓰면 된다.
fruit_code2 = {"오렌지":106, "수박":107}
fruit_code.update(fruit_code2)
fruit_code

>>> {'사과': 101, '배': 102, '딸기': 103, '포도': 104, '바나나': 105, '오렌지': 106, '수박': 107}
  • 삭제
    🤦‍♀️ 딕셔너리씨, 집 좀 비워주세요^^ 누가 그 다음에 들어올 지 모르겠지만 어쨌든.. 당장 비워주세요 -집주인 
    • .clear()를 사용한다.
      : 딕셔너리 자체가 사라지는 게 아니라, 딕셔너리 내부 데이터들을 삭제하는 것
fruit_code2.clear()
print(fruit_code2)
type(fruit_code2)

>>> {}
>>> dict

 

👀오늘 알게 된 것

✔ 파이썬은 백엔드 언어

✔ 전체 주석 처리 ctrl + /

'데이터 엔지니어링 과정 > python' 카테고리의 다른 글

[6일차] 객체와 클래스  (0) 2022.12.27
[5일차] 함수  (0) 2022.12.26
[4일차] 입력과 출력  (2) 2022.12.22
[3일차] 제어문 (if_for_while)  (0) 2022.12.21
[1일차] 파이썬 계산  (0) 2022.12.19