본문 바로가기
IT & 데이터 사이언스/Python

[Python] Python의 자료형(숫자, 문자열, 리스트)⑴

by 바른 호랑이 2024. 4. 18.
728x90
반응형

안녕하세요. 바른 호랑이입니다.

이번 게시글에서는 Python의 자료형에 대해 알아볼 예정입니다. 

 

- 자료형 이란?

ㆍ프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 지칭하며, 프로그램의 기본이자 핵심 단위임.

 

- 숫자형(Number)

ㆍ숫자 형태로 이루어진 자료형으로 정수, 실수, 복소수, 8진수, 16진수 등이 있음.

# 정수형(Integer)
a1 = 123
a2 = -178
a3 = 0
print(a1, a2, a3, sep=' / ')

# 실수형(Floating-point)
a4 = 1.2
a5 = -3.45
a6 = 4.24E10 # 지수표현
a7 = 4.24e-10
print(a4, a5, a6, a7, sep=' / ')

# 8진수(Octal)와 16진수(Hexadecimal)
a8 = 0x8ff
a9 = 0xABC
print(a8, a9, sep=' / ')

# 복소수(Complex number) / i대신 j를 사용
a10 = 1+2j
a11 = 3-4J
print(a10, a11, sep=' / ')
''' 
  .real : 복소수의 실수 부분 
  .imag : 복소수의 허수 부분 
  .conjugate : 복소수의 켤레복소수[원래 복소수에서 허수부분의 부호를 반대로 바꾼 것]
  abs() :  복소수의 절대값
'''
print(a10.real, a10.imag, a10.conjugate(), abs(a10), sep=' / ')

# 숫자형을 활용하기 위한 연산자
a = 3
b = 4
# 사칙연산
print(a+b, a-b, a*b, a/b) # python version 2.7에서는 자동형변환을 안하고 정수부만 반환하기에 0.75가 아닌 0을 반환함.
# 지수 및 나머지, 몫
print(3**3, 7%4, 7//4)

실행결과

 

- 문자열 자료형(String)

ㆍ문자열이란 문자, 단어 등으로 구성된 문자들의 집합을 의미하며, 따옴표로 둘러싸여 있음.('123'은 정수형이 아닌 문자열 자료형)

# 문자열 자료형 기본 사용방법
s1 = "Today" # 큰 따옴표이용
s2 = 'is' # 작은 따옴표 이용
s3 = """Cool""" # 큰 따옴표 3개 이용
print(s1, s2, s3, sep=' ')

# 문자열 안에 따옴표 포함시키는 방법
s4 = "I'm happy." # 큰 따옴표로 둘러싸고 안에서 작은 따옴표 사용
s5 = '"My favorite food is pizza."' # 작은 따옴표로 둘러싸고 안에서 큰 따옴표 사용
s6 = 'I\'m happy.' # 백슬래쉬 사용
print(s4, s5, s6, sep='\n', end='\n')

실행결과

# 여러 줄인 문자열을 변수에 대입하고 싶은 경우 사용방법
'''
이스케이프 코드 : 
프로그래밍할 경우 사용할 수 있도록 미리 정의해둔 '문자 조합'
주로 출력물을 보기 좋게 정렬하는 용도로 이용됨.

종류
1. \n : 줄바꿈
2. \t : 탭 간격
3. \\ : \를 그대로 표현
4. \' : 작은 따옴표를 그대로 표현
5. \" : 큰 따옴표를 그대로 표현
6. \r : 캐리지 리턴(줄바꿈 / 현재 커서를 가장 앞으로 이동)
7. \f : 폼 피드(줄바꿈 / 현재 커서를 다음 줄로 이동)
8. \a : 벨소리(출력 시 PC 스피커에서 '삑'소리가 남)
9. \b : 백 스페이스
10. \000 : 널 문자
'''
s7 = 'Today is cool.\nBut i can\'t go picnic because i\'m salary man.' # 문자열 안에서 이스케이프 문자사용
s8 = '''
Today is cool.
But i can't go picnic because i'm salary man.
     ''' # 따옴표를 3개를 사용
print(s7, s8, sep='\n')

실행결과

# 문자열 연산하기
head = 'Python'
tail = ' is fun!'
print(head+tail, head*2, sep='\n')

# 문자열 인덱싱(Indexing)과 슬라이싱(Slicing) / python indexing은 숫자를 0부터 셈
a = 'I like pizza. I want to eat pizza as lunch.'
print(a[0], a[3], a[-1], sep='\n') # -1은 맨뒤의 문자열의 인덱싱이고 뒤에서부터 문자열을 가져옴.
print(a[0]+a[1]+a[2]+a[3]+a[4], a[:5], sep='\n')
print(a[2]+a[3]+a[4], a[2:5], sep='\n')

raw_data_01 = '20240418Sunny'
year = raw_data_01[:4]
month = raw_data_01[4:6]
day = raw_data_01[6:8]
weather = raw_data_01[8:]
print(year+'-'+month+'-'+day+":"+weather)

실행결과

'''
문자열 포매팅 : 문자열 내에 특정 값을 삽입하는 방법
문자열 포맷 코드
1. %s : 문자열(string)
2. %c : 문자한개(character)
3. %d : 정수(Integer)
4. %f : 부동 소수(floating-point)
5. %o : 8진수
6. %x : 16진수
7. %% : % 그 자체
'''
# 숫자 바로 대입
print('I eat %d apples' %3)

# 문자열 바로 대입
print('I eate %s apples' %'five')

# 숫자 값을 나타내는 변수로 대입
num = 2
print('I eate %d apples' %num)

# 2개 이상의 값 넣기
print('i ate %d apples. so i was sick for %s days' %(10, 'three'))

# %사용하기
print('%d%%' %100)

실행결과

# 포맷 코드와 숫자 함께 사용하기
# 정렬과 공백
print('%10s' % 'hi', len('%10s' % 'hi'), sep=' / ') # %10s의 의미 : 전체 길이가 10인 문자열 공간에서 문자열을 오른쪽으로 정렬하라는 의미
print('%-10s' % 'hi', len('%-10s' % 'hi'), sep=' / ')

# 소수점 표현하기
print('%0.4f' % 3.42137234) # 소수점을 네번째 자리까지만 나타내게끔 처리(반올림)

실행결과

# 문자열 관련 함수들
# 문자 개수 세기
a = 'Python is best choice'
print(a.count('i'))

# 위치 알려주기
print(a.find('i')) # 해당 문자가 나온 첫번째 위치를 알려줌.
print(a.index('i'))

# 문자열 삽입
b = ','
print(b.join('abcd'))

# 대소문자 치환
print(a.upper(), a.lower(), sep='\n')

# 공백 지우기
c = '     remove space  '
print('_'+c.lstrip()+'_', '_'+c.rstrip()+'_', '_'+c.strip()+'_', sep='\n')

실행결과

# 문자열 치환
a = 'My favorite food is roasted chicken'
print(a.replace('roasted chicken', 'pizza'))

# 문자열 나누기
b = 'a:b:c:d'
print(a.split()) # parameter를 아무것도 설정 안하면 공백을 기준으로 나눔
print(b.split(':'))

# format 함수를 이용한 문자열 포매팅⑴
sentence_01 = 'I eat {0} apples'
sentence_02 = 'I ate {0} appels. so iwas sick for {1} days'
sentence_03 = 'I ate {v1} appels. so iwas sick for {v2} days'
sentence_04 = 'I ate {0} appels. so iwas sick for {v2} days'
num = 3
print(sentence_01.format(3)) # 숫자 바로 대입
print(sentence_01.format('five')) # 문자열 바로 대입
print(sentence_01.format(num)) # 변수로 대입
print(sentence_02.format(num, 'three')) # 2개 이상의 값 대입
print(sentence_03.format(v1=2, v2='five')) # 이름으로 대입
print(sentence_04.format(1, v2='two')) # 인덱스와 이름을 혼용하여 대입

실행결과

# format 함수를 이용한 문자열 포매팅⑵
print('_'+'{0:<10}'.format('hi')+'_') # 왼쪽 정렬
print('_'+'{0:>10}'.format('hi')+'_') # 오른쪽 정렬
print('_'+'{0:^10}'.format('hi')+'_') # 가운데 정렬

# 공백 채우기
print('{0:=^10}'.format('hi'))
print('{0:~<10}'.format('hi'))

# 소수점 표현하기
value = 3.42137234
print('{0:0.4f}'.format(value))

# '{' 또는 '}' 표현하기
print('{{ and }}'.format())

실행결과

 

- 리스트 자료형(List)

ㆍ다량의 자료형(문자열, 숫자형 등)을 표현하기 위해 하나의 집합 형태로 데이터를 저장하는 자료형으로 리스트의 요소로는 다양한 자료형의 형태가 함께 존재할 수 있고 어떠한 자료형이라도 포함시킬 수 있음.

# 리스트 자료형의 예시
list_01 = list()
list_02 = [1, 2, 3]
list_03 = ['Life', 'is', 'too', 'short']
list_04 = [1, 2, 'Life']
list_05 = [1, 2, ['Life', 'is', 'too', 'short']]
print(list_01, list_02, list_03, list_04, list_05, sep='\n')

# 리스트의 인덱싱과 슬라이싱
print(list_02[0],list_02[:2], list_02[-1], sep=' / ') # 마찬가지로 인덱스는 0부터 시작하며 슬라이싱도 가능
print(list_02[0]+list_02[2])
print(list_05[-1][0]) # 다중 리스트에서 원하는 요소 추출하기
print(list_05[-1][2:]) # 다중 리스트에서 원하는 요소들 슬라이싱하기

실행 결과

# 리스트 연산자
list_06 = [1, 2, 3, 4, 5]
list_07 = [6, 7, 8, 9, 10]
print(list_06+list_07) # 리스트를 더하면 요소들끼리 값을 더하는 게 아닌 2개의 리스트가 이어붙여짐
print(list_06*3) # 리스트를 곱하면 요소들에 해당 값이 곱해지는 것이 아닌 같은 리스트가 곱한 만큼 이어붙여짐

# 리스트의 수정, 변경, 삭제
list_07[3] = 1004 # 값 1개만 변경
print(list_07)
list_07[:4] = [1, 2, 3, 4] # 값을 여러개 변경 
print(list_07)
list_07[1:3] = [] # 값 삭제 01 : 슬라이싱 이용
print(list_07) 
del list_07[1] # 값 삭제 02 : del 함수 이용
print(list_07)

실행결과

# 리스트 관련 함수
list_08 = [1, 2, 3]
list_08.append(10) # 맨뒤에 요소 추가
print(list_08)
list_08.sort(reverse=True) # 정렬 : reverse옵션 활성화 시 descending
print(list_08)
list_08.append(11)
list_08.reverse() # 리스트 뒤집기
print(list_08)
print(list_08.index(11), list_08.index(10), sep=' / ') # 특정 요소의 위치 반환
list_08.insert(2, 3) # 특정 위치에 요소 삽입 : 예시에서는 2번째 위치에 3 삽입
print(list_08)
list_08.remove(3) # 리스트 내 특정 요소 삭제 / 값이 여러개인 경우 첫번째 값만 삭제됨
print(list_08)
list_08.pop() # 마지막 요소 반환 후 삭제
print(list_08)
list_08.pop(0) # 특정 위치 요소 반환 후 삭제
print(list_08)
list_08.append(2)
print(list_08.count(2)) # 리스트 내 특정요소의 갯수 반환
list_08.extend([123123, 456456]) # 리스트에 특정 리스트 더하기
print(list_08)
728x90
반응형

댓글