본문 바로가기
문법관련/python

파이썬 초급 문법 (슬라이싱~ 자료형 변환)

by print_soo 2024. 9. 13.

슬라이싱

슬라이싱이란, 어디부터 : 어디까지를 추출해주는 것이다.

정확히 말하면 어디부터 : 어디 직전까지 이다.

a = [1, 2, 3, 4, 5]
print(a[1:3]) #[2, 3]
print(a[:3]) #[1, 2, 3]

 

 

문자열 처리

# [문자열 더하기]
snack = '꼬깔콘'
num = '2개'

plz = snack + num 
# 꼬깔콘 2개

plz += '주세요'
# 꼬깔콘 2개 주세요.


# [여러줄 문자 만들기]
snack = ''' 꼬깔콘은
너무 
맛있는 과자'''

# 꼬깔콘은
# 너무
# 맛있는 과자

 

 

문자열 메소드 

zfill() 숫자의 길이를 맞추기위해 앞쪽에 0을 채움
replace(바꿀값,새로운값) 문자열을 찾아서 새로운문자열로 바꿈
strip('삭제할문자들') 양쪽에 지정한 문자를 삭제하거나 공백을 삭제
rstrip() 오른쪽 공백 삭제
lstrip() 왼쪽 공백 삭제
index('찾을문자열') 문자열을 찾아 인덱스를 알려줌
fine('찾을문자열') index와 같음
upper() 대문자로 바꾸기
lower() 소문자로 바꾸기
capitalize() 첫글자만 대문자로 바꾸기
count('문자열') 지정한문자열이 몇번 나왔는지 확인
split('기준문자열') 공백을 기준으로 나눠 리스트로 저장해줌
center('길이') 지정한 길이로 만들어 가운데정렬
ljust('길이') 지정한 길이로 만들어 왼쪽정렬
rjust('길이') 지정한 길이로 만들어 오른쪽정렬

 

 

 

 

문자열 포멧

#[문자열 출력]
python = '파이썬'
java = '자바'
print(python + '' + java) # 파이썬 자바
print(python, java) # 파이썬 자바

 

이렇게 문자열 끼리 더해서 출력하게 될 경우 2개 이하면 간단하게 되지만 그 이상은 복잡해진다. 그 때 사용하는 게 문자열 포멧이다.

#[문자열 포멧]


python = '파이썬'
java = '자바'

#방법 - 1
print('개발 언어에는 {}, {}등이 있습니다.'.format(python, java))
# 개발 언어에는 파이썬, 자바등이 있습니다.

# 방법 - 2
print('개발 언어에는 {0}, {1}등이 있습니다.'.format(python, java)) # 개발 언어에는 파이썬, 자바등이 있습니다.
print('개발 언어에는 {1}, {0}등이 있습니다.'.format(python, java)) # 개발 언어에는 자바, 파이썬등이 있습니다.

# 방법 - 3: f-string
print(f'개발 언어에는 {python}, {java}등이 있습니다.'.format(python, java)) # 개발 언어에는 파이썬, 자바등이 있습니다.

 

 

탈출 문자

: 탈출 문자란 \(back slash)와 바로 뒤에 같이 나오는 특정 문자등을 합쳐 하나의 탈줄문자라고 하고 출력시 특별한 의미를 나타낸다.

 


리스트

: 수정 가능 / 순서 보장/ 중복 허용인 컬렉션 타입 (여러 데이터를 하나의 변수에 저장하고 관리할 수 있는 자료구조를 제공)

리스트 = [값1, 값2, ...]

my_list = ['iOS', 'CV', 'Spring']

 

리스트는 중복을 허용한다!

리스트는 순서가 보장된다! -> 즉, 인덱스 활용 가능/ 슬라이싱 가능

리스트는 수정이 가능하다!

 

my_list = ['iOS', 'CV', 'Spring']

#인덱싱
print(my_list[1]) # CV

#슬라이싱
print(my_list[:2]) # ['iOS', 'CV']

 

리스트관련 함수

my_list = ['iOS', 'CV', 'Spring']

# 길이
print(len(my_list)) # 3

# 데이터 추가
my_list.append('H2')
print(my_list) # ['iOS', 'CV', 'Spring', 'H2']

# 데이터 삭제
my_list.remove('Spring')
print(my_list) # ['iOS', 'CV']

# 리스트 확장
your_list = ['AOS', 'DL', 'ML']
my_list.extend(your_list)
print(my_list) # ['iOS', 'CV', 'Spring', 'AOS', 'DL', 'ML']

 

 

 


튜플

: 수정 불가능 / 순서 보장/ 중복 허용인 컬렉션 타입 (여러 데이터를 하나의 변수에 저장하고 관리할 수 있는 자료구조를 제공)

: 즉, 쉽게 말하면 읽기 전용 리스트이다.

튜플 = (값1, 값2 ... )

 

나머지 사용법은 리스트와 같다.

 

[패킹과 언패킹]

my_tuple = (1, 2, 3) # 패킹
(one, two, three) = my_tuple # 언패킹
# 위의 과정은 아래와 같다
# one = 1
# two = 2
# three = 3

 

 

만약에 튜플의 요소의 개수보다 변수의 수가 작다면?

my_tuple = (1, 2, 3, 4, 5, 6, 7, 8) # 패킹
(one, two, three, *others) = my_tuple # 언패킹
print(others) # [4, 5, 6, 7, 8]
print(others[0]) # 4

 

이렇게 other에 담으면 other에는 나머지 요소들이 리스트 형식으로 담긴다.

 


세트

: 수정 가능 / 순서 보장 x / 중복 허용 x인 컬렉션 타입 (여러 데이터를 하나의 변수에 저장하고 관리할 수 있는 자료구조를 제공)

: 집합을 활용 가능한 컬련션 타입

 

A = {'돈까스', '보쌈', '제육'}
B = {'짬뽕', '제육', '초밥'}

# 교집합 (공통 부분만)
print(A.intersection(B))
# 결과: {'제육'}


# 합집합 (모든 요소)
print(A.union(B))
# 결과: {'보쌈', '제육', '짬뽕', '초밥', '돈까스'}


# 차집합 (모든 요소 - (공통 부분 + B)
print(A.difference(B))
# 결과: {'보쌈', '돈까스'}

 

순서가 보장되지 않기 때문에 인덱스를 통한 접근은 불가능하다.

다만 수정은 가능하다!

my_set = {'돈까스', '보쌈', '제육'}


my_set.add('쌀국수')
print(my_set)
# {'돈까스', '보쌈', '제육', '쌀국수'}


my_set.remove('제육')
print(my_set)
# {'돈까스', '보쌈', '쌀국수'}

 


딕셔러니

: key : value가 쌍을 이루는 컬렉션 / 다만, key는 중복이 허용되지 않음.

 

딕셔너리 = {key1:value1, key2:value2, ... }


# 기본 사용법
person = {'이름':'홍길동', '나이':21, '키':180, '몸무게': 78}
print(person['이름']) # 홍길동
print(person['키']) # 180
print(person['별명']) # error!!!
print(person.get('별명')) # None -> 없어도 에러가 발생되지 않고 None이 출력

# 새로운 데이터 추가
peson['최종학력'] = '문과'

# 한 개의 특정 키의 데이터 변경
person['키'] = 190

# 두개 이상의 키의 데이터 변경
person.update({'키': 175, '몸무게': 70})

# 모든 데이터 삭제
person.clear()

# 특정 데이터 삭제
person.pop('몸무게')

# 모든 키 확인
person.keys()

# 모든 값 확인
person.values()

 

 


자료형 비교

 

 

자료형 변환

튜플은 수정이 불가능하지만 수정이 가능하게 만들 수 있다. 튜플을 리스트로 변경해서 리스트의 append로 요소를 추가하고 다시 튜플로 변경하면된다.

 

my_tuple = (1, 2, 3)
print(f"my_tuple 변경 전 {my_tuple}")
my_list = list(my_tuple)
my_list.append(4)
my_tuple = tuple(my_list)
print(f"my_tuple 변경 후 {my_tuple}")

# my_tuple 변경 전 (1, 2, 3)
# my_tuple 변경 후 (1, 2, 3, 4)

 

 

만약 리스트의 중복을 없애고 싶다면? 세트로 변경 후 다시 리스트로 변경하면 중복 값이 제거된다.

 

my_list = [1, 2, 3, 3, 3]
print(f"my_list 변경 전 {my_list}")
my_set = set(my_list)
my_list = list(my_set)
print(f"my_list 변경 전 {my_list}")

# my_list 변경 전 [1, 2, 3, 3, 3]
# my_list 변경 전 [1, 2, 3]