HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
DGroid
DGroid
/
🐍
Python 초급
/
2️⃣
2주차 (230402)
2️⃣

2주차 (230402)

문자열(str) 자료형

“string object”
  • 표기법 ” ” 혹은 ‘ ’로 감싸기
  • immutable 원소의 추가/삭제 혹은 값이 변경될 수 없음
  • 원소의 자료형 임의의 자료형(아무거나)의 원소를 저장할 수 있음
  • 인덱스(index) 정수로 원소의 순서를 나타냄

문자열 만들기

  1. 큰따옴표(”)로 양쪽 둘러싸기
    1. print("Hello DGroid") print("This isn't Error.") # 작은따옴표가 큰따옴표안에 있는 경우 print("This is " Error.") # 큰따옴표가 큰따옴표안에 있는 경우
  1. 작은따옴표(’)로 양쪽 둘러싸기
    1. print('Hello DGroid') print('This isn"t Error.') # 큰따옴표가 작은따옴표안에 있는 경우 print('This is ' Error.') # 작은따옴표가 작은따옴표안에 있는 경우
  1. 큰따옴표 3개 연속(”””)으로 양쪽 둘러싸기
    1. multiline = """Let's go to library to study Python """ print(multiline)
      [출력결과] Let’s go to library to study Python
  1. 작은따옴표 3개 연속(’’’)으로 양쪽 둘러싸기
    1. multiline = '''Let's go to library to study Python ''' print(multiline)
      [출력결과] Let’s go to library to study Python

이스케이프 코드

이스케이프 코드란 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 “문자 조합”
쓰는 이유
이걸 사용하면 줄바꿈을 위해 따옴표 3개를 안써도 \n으로 표현 가능!
큰따옴표안 큰따옴표 → 에러 안내고 \”로 표현 가능!
작은따옴표안 작은따옴표 → 에러 안내고 \’로 표현 가능!
notion image
# 예시 print("I'll show you \n \"escape code\"") print('\t \'escape code\'의 형태는 \\뒤에 어떤 문자를 붙여서 사용한다.')
[출력결과] I’ll show you “escape code” ‘escape code’의 형태는 \뒤에 어떤 문자를 붙여서 사용한다.
 

문자열 인덱싱, 슬라이싱, 연산

문자열 인덱싱 해보기 → 0부터 시작!
is로 문자 있는지 확인해보기
문자열 길이 구해보기 → 공백도 센다!
문자열 인덱싱 해보기 → 0부터 시작! is로 문자 있는지 확인해보기 문자열 길이 구해보기 → 공백도 센다!
문자열에서의 덧셈과 곱셈
→ 일반 숫자에서의 덧셈과 곱셈이랑은 다르다
문자열에서의 덧셈과 곱셈 → 일반 숫자에서의 덧셈과 곱셈이랑은 다르다
문자열 포매팅은 중요한 내용이지만 나중에 심화로 시간이 남는다면 다루도록 하겠습니다. 궁금하다면 점프 투 파이썬(문자열 포매팅)에서 자습 바랍니다!
이 외에도 문자열을 다룰때 유용한 함수들이 점프 투 파이썬(문자열 관련 함수들)에 소개되어있는데, 해당 내용은 대충 어떤 함수들이 있는지만 알고 용법은 그때그때 구글링하는것을 추천하므로 넘어가도록 하겠습니다.
notion image

리스트(list) 자료형

리스트명 = [요소1, 요소2, 요소3, ...]
  • 표기법 [ ]로 감싸주고 각 요소는 ,로 구분
  • mutable 원소의 추가/삭제 혹은 값이 변경될 수 있음
  • 원소의 자료형 임의의 자료형(아무거나)의 원소를 저장할 수 있음
  • 인덱스(index) 정수로 원소의 순서를 나타냄

리스트 만들기

# 다양한 리스트 a = [] # 빈 리스트 만들기 1 a = list() # 빈 리스트 만들기 2 b = [1, 2, 3] c = ['Life', 'is'] d = ['Life', 5] e = [1, ['Life', 4]]

리스트 인덱싱, 슬라이싱, 연산

notion image
리스트에서의 len()은 원소의 개수를 의미한다.
+나 *의 연산은 문자열에서의 연산과 동일한 결과를 보여준다. 여기 소개된 대부분의 연산이 다른 시퀀스(str, tuple)에도 적용된다.
notion image
s[i:j:k] = 간격이 있는 슬라이싱 → i에서 j까지 k의 간격으로! (물론 j 미포함)
notion image
중첩된 리스트에서의 원소 인덱스 접근
중첩된 리스트에서의 원소 인덱스 접근
뒤에서부터 원소를 세고 싶다면 마이너스 인덱스 사용하자
여기서 껍데기 복사란, 값만 복사해오고 원본에는 영향을 안 미친다는 뜻.
[껍데기 복사에 대한 이해를 돕기 위한 코드]
껍데기 복사본 = t5
원본 = t3
[껍데기 복사에 대한 이해를 돕기 위한 코드] 껍데기 복사본 = t5 원본 = t3
t1과 t2는 동일한 리스트를 가리킴.
하지만 t3와 t4는 껍데기 복사해왔기때문에 각각 다른 리스트를 가리킴.
t1과 t2는 동일한 리스트를 가리킴. 하지만 t3와 t4는 껍데기 복사해왔기때문에 각각 다른 리스트를 가리킴.
⚠️
주의: 연산 TypeError 발생 a = [1, 2, 3] 을 정의하고, a[2] + “hi”를 입력하면 무엇이 나올까? 3hi가 아닌 TypeError가 뜬다. a[2]는 int type이고 “hi”는 str type이기 때문에 다른 type간의 연산은 불가능하다는 의미이다. 그럼 에러를 피하고 3hi를 만들고 싶다면 a[2] 를 str type으로 형변환을 해준뒤 더해주어야 할 것이다 → str(a[2]) + “hi”
 

리스트 추가, 수정, 삭제

  • 추가
      1. append() list에 원소를 하나씩 추가
      1. extend() 한 list에 다른 list의 모든 원소를 추가 t3 = t1 + t2와 동일
      notion image
  • 수정
    • notion image
  • 삭제
    • notion image
 
 
문자열때와 동일하게, 이 외에도 리스트를 다룰때 유용한 함수들이 점프 투 파이썬(리스트 관련 함수들)에 소개되어있는데, 해당 내용은 대충 어떤 함수들이 있는지만 알고 용법은 그때그때 구글링하는것을 추천하므로 넘어가도록 하겠습니다.
하지만 append()는 기본적으로 많이 써서 토글에 설명을 넣었습니다 허허
notion image
이건 그냥 참고용~,,
이건 그냥 참고용~,,

튜플(tuple) 자료형

튜플명 = (요소1,)
튜플명 = (요소1, 요소2, 요소3, ...)
  • 표기법 ( )로 감싸주고 각 요소는 ,로 구분 정의할 때 ( )는 생략 가능하고, 원소가 하나일때는 컴마 ,를 뒤에 추가해야함
  • immutable 원소의 추가/삭제 혹은 값이 변경될 수 없음
  • 원소의 자료형 임의의 자료형(아무거나)의 원소를 저장할 수 있음
  • 인덱스(index) 정수로 원소의 순서를 나타냄

튜플 만들기

notion image
t1, t6: 빈 튜플 만들기
t2: 원소가 하나인 튜플 만들기
t3: 원소가 여러개인 튜플 만들기
t4: 괄호 생략해도 튜플 정의 가능
t5: 튜플 안에 튜플 가능

튜플 인덱싱, 슬라이싱, 연산

→ 리스트와 완벽히 동일하다

튜플 추가, 수정, 삭제

→ immutable 하므로 요솟값을 변경할 수 없어서 불가능!

딕셔너리(dictionary) 자료형

딕셔너리명 = {key1:value1, key2:value2, key3:value3, ...}
  • 표기법 { }로 감싸주고 각 요소는 ,로 구분 각각의 요소는 Key: Value 형태임
  • mutable 원소의 추가/삭제 혹은 값이 변경될 수 있음
  • 원소의 자료형 [Key] immutable인 type (bool, int, float, tuple, str) 만 가능 [Value] 임의의 자료형(아무거나)의 원소를 저장할 수 있음
  • 인덱스(index) 요소간 순서가 없음 key값을 기존 인덱스 자리에 넣으면 value가 나옴

딕셔너리 만들기

notion image
value는 mutable인 자료형 들어갈 수 있다
value는 mutable인 자료형 들어갈 수 있다

딕셔너리 추가, 수정, 삭제

  • 추가
    • 추가하고싶은 key와 value를 각각 new_k, new_v라고 하자
      1. a[new_k] = new_v
      1. a.update({new_k : new_v})
      a = {1: 'a'} a[2] = 'b' a.update({3: 'c'}) print(a) >> a는 {1: 'a', 2: 'b', 3: 'c'}가 출력됨.
  • 수정
    • 수정이란 기존 key가 있을 때 해당 value를 바꾸고 싶다고 정의하자
      기존 key와 새로운 value를 각각 org_k, new_v라고 하면 추가할 때와 동일한 방식으로 수정할 수 있다
      1. a[org_k] = new_v
      1. a.update({org_k : new_v})
      a = {1: 'a', 2: 'b', 3: 'c'} a[2] = 'change' a.update({3: 'changeee'}) print(a) >> a는 {1: 'a', 2: 'change', 3: 'changeee'}가 출력됨.
      이를 다시 말하면, 한 딕셔너리 안에서 같은 key는 있을 수 없다!
      → 수정을 추가라고 다시 보자면, 똑같은 key (key가 2인) 를 가지는 value (’change’) 를 새로 딕셔너리에 추가한 것이다. 그런데 기존에 있던 key가 2인 것의 value인 ‘b’는 사라졌으므로, 한 딕셔너리안에서 {2: ‘b’, 2: ’change’}와 같이는 존재할 수 없음
  • 삭제
    • del a[key] del 함수를 사용해서 위와 같이 입력하면 지정한 key에 해당하는 {key : value}쌍이 삭제된다.
      a.clear() 딕셔너리의 모든 아이템을 지움
      notion image

딕셔너리 관련 함수들

*여기서 a는 임의의 딕셔너리 명이고, key 또한 임의의 key값, value 또한 임의의 value값이다.
a.keys() key만 모아보기
a.values() value만 모아보기
a.items() key, value 쌍 얻기
주의: 위 3개 모두 dict_뭐시기 객체로 반환해준다. list형의 반환값이 필요하다면 list()로 감싸서 형변환 해주자.
a.get(key) key로 value 얻기. a[key]와 동일한 결과!
딕셔너리에 존재하지 않는 key를 non_key라고 하면, a[non-key]는 오류가 나고 a.get(non_key)는 None을 반환해준다. None을 반환해준다 ⇒ 오류가 안난다~!
a.get(non_key, def_v)로 쓰면 non_key가 딕셔너리에 존재하지 않는 key일 경우, None이 아니라 def_v가 반환된다.
key in a 해당 key가 딕셔너리 안에 있는지 조사하기. True 또는 False가 반환된다
 

집합(set) 자료형

집합명 = set([요소1, 요소2, 요소3, ...])
집합명 = {요소1, 요소2, 요소3, ...}
  • 표기법 { }로 감싸주고 각 요소는 ,로 구분
  • mutable 원소의 추가/삭제 혹은 값이 변경될 수 있음
  • 원소의 자료형 immutable 자료형 (bool, int, float, tuple, str) 만 가능 일반적으로 문자열 혹은 정수가 많이 사용됨
  • 인덱스(index) 요소간 순서가 없음
  • 중복을 허용하지 않음 → set은 자료형의 중복을 제거하기 위한 필터로 사용되기도.

집합 만들기

notion image

집합 추가, 수정, 삭제

  • 추가
    • s1.add(요소) 1개만 추가
      s1.update([요소1, 요소2, 요소3, …]) 여러개 요소 추가
  • 삭제
    • s1.remove(요소) 해당 요소 삭제. → 없는 요소 삭제해달라고하면 Error 발생
      s1.clear() 집합 요소 다 지우고 비우기
      Error 발생을 막기위해 요소 in 집합명으로 해당 요소가 있는지 여부 확인 가능하다
      Error 발생을 막기위해 요소 in 집합명으로 해당 요소가 있는지 여부 확인 가능하다
       

교집합, 합집합, 차집합

두 집합 s1과 s2가 있다고 했을때, 다음과 같이 연산이 가능하다
  • 교집합
      1. s1 & s2
      1. s1.intersection(s2) s2.intersection(s1)과 동일
  • 합집합
      1. s1 | s2
      1. s1.union(s2) s2.union(s1)과 동일
  • 차집합
      1. s1 - s2 차집합의 정의상, s2 - s1과 같지 않음
      1. s1.difference(s2) 차집합의 정의상, s2.difference(s1)과 같지 않음
       

불(bool) 자료형

참, 거짓을 나타내는 자료형이다
True(참) 혹은 False(거짓)만을 불 자료형으로 가진다
⚠️
주의: 표기법 true 혹은 TRUE와 같이 적으면 안되고 무조건 True로 적어야한다 False도 마찬가지로 첫 문자만 항상 대문자로 사용해야한다.
notion image
불 자료형은 조건문의 반환값으로도 사용된다.
1 == 1 >> True가 반환된다. 2 < 1 >> False가 반환된다.

자료형의 참과 거짓

값
True or False
“python”
True
“”
False
[1, 2, 3]
True
[ ]
False
(1, 2, 3)
True
( )
False
1
True
0
False
None
False
위의 표를 보고 헷갈릴 필요 없다. 비어있으면 False임을 알 수 있다!
나중에 조건문에서 사용하기 좋다.
간단히 1은 True, 0은 False라고 배우는데. 0만 False고 나머지 숫자는 True라고 알고있자.
 
bool()함수를 사용하면 자료형의 참과 거짓을 보다 정확하게 식별할 수 있다.
bool([1, 2, 3]) >> True 반환 bool([]) >> False 반환 bool(0) >> False 반환 bool(3) >> True 반환

예제

💁‍♀️
예제 사용법 1. 예제는 문제와 조건을 읽어보고 코드를 따로 짜보며 생각해본다. 2. 코드를 완성했으면 문제 토글을 열어서 답을 확인한다. 3. 자신이 짠 코드와 비교하며 이해한다.
리스트 문제 [조건] 빈 리스트 만들고 원소(1, 5, 7, 3) 하나씩 추가하기 원소 하나씩 찾기 3번째를 4로 수정하기 리스트 슬라이싱(2번째~마지막) 해와서 새로운 변수에 저장하기 위에서 만든 리스트 변수에 요소 추가(”hello”)하기 리스트 원래거랑 다시 더해주기
# 빈 리스트 만들고 원소(1, 5, 7, 3) 하나씩 추가하기 a = [] a.append(1) a.append(5) a.append(7) a.append(3) # 원소 하나씩 찾기 print(a[0]) print(a[1]) print(a[2]) print(a[3]) # 3번째를 4로 수정하기 a[2] = 4 # 리스트 슬라이싱(2번째~마지막) 해와서 새로운 변수에 저장하기 b = a[1:] # 위에서 만든 리스트 변수에 요소 추가(”hello”)하기 b.append("hello") # 리스트 원래거랑 다시 더해주기 a += b
결국 최종적으로 구할 수 있는 a는 [1, 5, 4, 3, 5, 4, 3, ‘hello’]이다.
BasicPython-List(Colab풀이).pdf
85.6KB
튜플 문제 [조건] 빈 튜플 만들고 원소(4, 8, 16) 있는 튜플 만들기 3번째 원소 찾기 튜플 2배로 만들기 튜플 길이가 첫번째 문제에서 만들었던 최종 리스트의 길이와 같은지 bool 확인하기
# 리스트 문제에서 만들었던 최종 리스트 a = [1, 5, 4, 3, 5, 4, 3, 'hello'] # 빈 튜플 만들고 원소(4, 8, 16) 있는 튜플 만들기 t = () t = (4, 8, 16) # 3번째 원소 찾기 print(t[2]) # 튜플 2배로 만들기 t *= 2 # 튜플 길이가 첫번째 문제에서 만들었던 최종 리스트의 길이와 같은지 bool 확인하기 len(a) == len(t)
BasicPython-Tuple(Colab풀이).pdf
67.0KB
딕셔너리 문제 해당 문제는 조건에 표를 표시해야해서 조건이 토글을 열어야 있습니다
[조건]
빈 딕셔너리 만들고 다음 표에 따라 딕셔너리 하나씩 채우기
key type
key
value type
value
str
a
str
apple
str
b
str
banana
int
51
list
7, 8, 9
tuple
4, 5
tuple
50
51을 key로 갖는 value 찾기 → 7, 8, 9가 들어있는 리스트! 7, 8, 9가 들어있는 리스트 맨 뒤에 10 추가하기
key들 리스트로 형변환해서 출력하기
정답(4/10 공개)
# 빈 딕셔너리 만들고 표에 따라 딕셔너리 하나씩 채우기 d = {} d['a'] = 'apple' d['b'] = 'banana' d[51] = [7, 8, 9] d[(4, 5)] = (50,) # 51을 key로 갖는 value 찾기 print(d[51]) # 위에서 찾은 리스트 맨 뒤에 10 추가하기 d[51].append(10) print(d[51]) # key들 리스트로 형변환해서 출력하기 print(list(d.keys()))
BasicPython-Dict(Colab풀이).pdf
72.0KB
집합 문제 [조건] 빈 집합자료형을 2개 만들고 한 집합에는 “Let’s go to mississippi” 다른 집합에는 “No I don’t want to go there”를 넣는다 두 집합의 교집합 구하기 첫번째 리스트 문제에서 만든 리스트를 집합자료형으로 만들기, 거기서 원소 ‘3’ 제거하기 (원소 3개 제거하라는거 아닙니다ㅎㅎ..)
# 빈 집합자료형을 2개 만들기 s1 = set() s2 = set() # 한 집합에는 “Let’s go to mississippi” # 다른 집합에는 “No I don’t want to go there” 를 넣는데, # 각 문자열마다 떨어져서 들어갈 수 있도록(예시: ‘L’, ‘e’, ‘t’, …) 넣어주기 s1.update("Let's go to mississippi") s2.update("No I don’t want to go there") # 두 집합의 교집합 구하기 print(s1 & s2) # 첫번째 리스트 문제에서 만든 리스트(그냥 가져오겠음..)를 집합자료형으로 만들기 # 첫번째 문제에서 이어서 풀고 있다면 굳이 새로 이렇게 리스트 만들 필요없음 a = [1, 5, 4, 3, 5, 4, 3, 'Hello'] a = set(a) print(a) # 거기서 원소 '3' 제거하기 (원소 3개 제거하라는거 아닙니다ㅎㅎ..) a.remove(3) print(a)
BasicPython-Set(Colab풀이).pdf
79.3KB