본문 바로가기

프로그래밍/파이썬

[파이썬] 4-1. 파이썬에서 사용되는 자료형

I. 숫자형


정수형(Integer): 정수를 뜻하는 자료형으로, 아래 예는 변수 a 에 정수를 대입하는 예이다.

>>> a = 123

>>> a = -456

>>> a = 0 


실수형(Floating-point)소숫점이 포함된 숫자로, 아래 예는 변수 a에 실수를 대입하는 예이다.

>>> a = 1.23

>>> a = -4.56

>>> a = 3.15E10 [=3.15*10^10]

>>> a = 5.28e-10 [=5.28*10^-10]


8진수 & 16진수8진수를 만들기 위해선 앞에 0o 또는 0O로 시작하고, 16진수를 만들기 위해선 앞에 0x로 시작하면 된다.

>>> a = 0o842

>>> b = 0x6ff

>>> c = 0xABC


복소수(Complex Number): 복소수를 사용하기 위해선, 소문자 j 나 대문자 J를 쓰면 된다.

>>> a = 1+2j

>>> b = 3-4J


  • 복소수 내장 관련 함수

 함수

 의미 

 예시 

 복소수.real

 실수 부분 리턴 

 >>> a = 1+2j

 >>> a.real

 1.0

 복소수.imag 

 허수 부분 리턴

 >>> a = 1+2j

 >>> a.imag

 2.0

 복소수.conjugate()

 켤레복소수 리턴

 >>> a = 1+2j

 >>> a.conjugate()

 (1-2j)

 abs(복소수)

 절대값 리턴 

 >>> a = 1+2j

 >>> abs(a)

 2.2360679774997898


제곱 연산자x의 y제곱을 나타내는 연산자로, **를 사용하며, 제곱값을 리턴한다.

>>> a = 4

>>> b = 2

>>> a ** b [=4^2]

16


나머지 반환 연산자: 나눗셈 후 나머지를 반환하는 연산자로, %를 사용하며, 나눗셈의 나머지 값을 반환한다.

>>> 8 % 3

2

>>> 7 % 3

1


소숫점 아랫자리를 버리는 연산자: 나눗셈 후 소숫점 아랫자리를 버리는 연산자로 즉, 나눈후의 몫이 나오고, //를 사용한다.

>>> 9 // 4

2 [2.25 중에 0.25가 버려짐]



II. 문자열 자료형


파이썬에서 문자열을 만드는 방법들

 큰따옴표(")로 양쪽 둘러싸기

 "Hello, World"

 작은따옴표(')로 양쪽 둘러싸기

 'Hello, World'

 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기

 """Python is very easy. It is very useful."""

 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기

 '''Python is very easy. It is very useful.'''


  • 파이썬에서 위와같은 여러가지 방법을 사용하는 이유

1. 문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때

 문자열에 작은 따옴표(') 포함시키기

 >>> cool = "I'll study Python."

 >>> cool = 'I'll study Python.' [구문 오류 발생]

 문자열에 큰따옴표(") 포함시키기

 >>> food = 'He says, "I am very hungry"' 

 \(백슬래시)를 이용해서 포함시키기

 >>> food = "He says, \"I am very hungry\""


2. 여러 줄인 문자열을 변수에 대입할 때

줄을 바꾸기 위해  이스케이프 코드 '\n' 삽입하기

 >>>multiline = Python is very easy.\nIt is very useful.

 연속된 따옴표 사용하기

 >>> multiline = '''

 . . . Python is very easy.

 . . . It is very useful.

 '''

 >>> multiline = """

 . . . Python is very easy.

 . . . It is very useful.

 """

 ▼결과출력
 >>> print(multiline)
 Python is very easy.
 It is very useful.



문자열 연산하기


문자열 더해서 연결하기

 >>> head = "Python"

 >>> tail = "is fun!"

 >>> head + tail

 'Python is fun!'


 문자열 곱하기 

 >>> a = "good"

 >>> a * 2

 'goodgood' 


문자열 곱하기 응용

 #multistring.py


 print("=" * 50)

 print("New Program")

 print("=" * 50)

 ▼결과값

 C:\Python> python multistring.py

 ==================================================

 New Program

 ==================================================



문자열 인덱싱과 슬라이싱

열 인덱싱: 저장한 문자열에 번호를 매김

 >>> a = "You Only Live Once, You need rest"

 >>> a[5]

 'n'

 >>> a[-1]  /*뒤에서 부터 첫글자*/

 't'

 >>> a[-0]  /*a[0]과 같은 결과*/

 'Y'

 0부터 세며, a[0]: Y, a[1]: o, a[2]: u ... 이런식으로 나아감


 문자열 슬라이싱: 저장된 문자열에서 문자를 뽑아냄

 >>> a = "You Only Live Once, You need rest"

 >>> a[4:8]

 'Only'

 >>> a[20:]  /*뒤생략시 문자열 끝까지*/

 'You need rest'

 >>> a[:18]  /*앞생략시 문자열 처음부터*/

 'You Only Live Once'

 >>> a[20:-5]

 'You need'

 a[x:y] ▶ 인덱스 x에서 y전까지의 문자를 뽑아냄 [x <= a < y]

 활용

 >>> a = "20180405Rainy"

 >>> year = a[:4]

 >>> day = a[4:8]

 >>> weather = a[8:]

 >>> year

 '2018'

 >>> day

 '0405'

 >>> weather

 'Raniy' 



문자열 포매팅: 문자열 내에 어떤 값을 삽입하는 방법

 숫자 바로 대입 

 >>> "I eat %d apples." %3

 'I eat 3 apples.'

 문자열 바로 대입

 >>> "I eat %s apples." %"five"

 'I eat five apples.'

 숫자 값을 나타내는 변수로 대입

 >>> number = 3

 >>> "I eat %d apples." %number

 'I eat 3 apples.'

 2개 이상의 값 넣기

 >>> number = 10

 >>> day = "three"

 >>> "I ate %d apples. so I was sick for %s days." %(number,day)

 'I ate 10 apples. so I was sick for three days.'


  • 문자열 포맷 코드

 코드

 설명 

 %s 

 문자열(String) 

 %c 

 문자 1개(Character) 

 %d 

 정수(Integer) 

 %f 

 부동 소수(floating-point) 

 %o 

 8진수 

 %x

 16진수 

 %%

 Literal % (문자 '%' 자체) 



  • 포맷 코드와 숫자 함께 사용하기

 정렬과 공백

 >>> "%10s" % "hi"

 '        hi'  ←hi가 오른쪽으로 정렬됨 

 전체 길이가 10개인 문자열 공간에서 hi를 오른쪽으로 정렬 [공백 8개]

 >>> "%-10sjane." % 'hi'

 'hi        jane.' ←hi가 왼쪽으로 정렬됨

 전체 길이가 10개인 문자열 공간에서 hi를 왼쪽으로 정렬 [공백 8개]

 소수점 표현하기 

 >>> "%0.4f % 3.42134234

 '3.4213'

 소수점 네번째 자리까지만 나타냄 

 >>> "%10.4f % 3.42134234

 '    3.4213'

 전체 길이가 10개인 문자열 공간에서 소숫점 넷째짜리 까지 나타냄 [공백 4개]



문자열 관련 함수들


 문자 개수 세기(count) 

 >>> a="hobby"

 >>> a.count('b')

 2

 문자열 중 문자 b의 개수 반환 

 위치 알려주기1(find)

 >>> a="Python is best choice"

 >>> a.find('b')

 10

 >>> a.find('k')

 -1

 문자열 b가 처음 나온 위치를 반환하고, 문자 미존재시 -1 반환

 위치 알려주기2(index) 

 >>> a="Life is too short"

 >>> a.index('t')

 8

 >>> a.index('k')

 ~~오류발생~~

 문자열 중 문자 t가 맨처음으로 나온 위치 반환, 문자 미존재시 오류발생 

 문자열 삽입(join)

 >>> a=","

 >>> a.join('abcd')

 'a,b,c,d'

 abcd라는 문자열의 각각 사이에 변수 a의 값인 ','를 삽입 

 소→대문자 변환(upper)

 >>> a="hi"

 >>> a.upper()

 'HI'

 소문자를 대문자로 변환 

 대→소문자 변환(lower)

 >>> a ="HI"

 >>> a.lower()

 'hi'

 대문자를 소문자로 변환 

 왼쪽 공백 지우기(lstrip)

 >>> a=" hi "

 >>> a.lstrip()

 'hi '

 문자열 중 가장 왼쪽에 있는 한칸 이상의 연속된 공백들을 모두 지움

 오른쪽 공백 지우기(rstrip)

 >>> a=" hi "

 >>> a.rstrip

 ' hi'

 문자열 중 가장 오른쪽에 있는 한칸 이상의 연속된 공백들을 모두 지움

 양쪽 공백 지우기(strip)

 >>> a= " hi "

 >>> a.strip

 'hi' 

 문자열 양쪽에 있는 한칸 이상의 연속된 공백들을 모두 지움

 문자열 바꾸기(replace)

 >>> a="Life is too short"

 >>> a.replace("Life", "Your leg")

 'Your leg is too short'

 replace(바뀌게 될 문자열, 바꿀 문자열)으로 문자열 대체

 문자열 나누기(split)

 >>> a="Life is too short"

 >>> a.split() ← 공백 기준

 ['Life', 'is', 'too', 'short']


 >>> a="a:b:c:d"

 >>> a.split(':') ← 기호 기준

 ['a', 'b', 'c', 'd']

 아무런 값을 넣지 않을땐 공백기준, 기호를 넣으면 그 기호를 기준으로 나눔




III. 리스트 자료형


리스트의 인덱싱


 >>> a=[1, 2, 3]

 >>> a

 [1, 2, 3] 

 변수 a에 [1, 2, 3] 이라는 값 설정 

 >>> a[0]

 1 

 a[0]은 리스트 a의 첫번째 요소값 

 >>> a[0] + a[2]  ← 1 + 3

 4 

 a[0] 요소값과 a[2] 요소값의 덧셈 결과

 >>> a[-1]

 3

 리스트a의 마지막 요소값 


 >>> a=[1, 2, 3, ['a', 'b', 'c']] 

 숫자 1, 2, 3과 다른 리스트를 포함

 >>> a[0]

 1

 >>> a[-1]

 ['a', 'b', 'c']

 >>> a[3]

 ['a', 'b', 'c'] 

 여기서 a[-1]과 a[3]은 리스트 a의 4번째 요소로 동일한 결과값을 나타내는네 이를 아래에서 뽑아 내보자

 >>> a[-1][0]

 'a'

 a[-1]이 ['a', 'b', 'c']리스트인데 그 중 첫번째 요소[0]를 불러옴 

 >>> a=[1, 2, ['a', 'b', ['Life', 'is']]]

 >>> a[2][2][0]

 'Life'

 삼중 리스트 불러오는법



리스트의 슬라이싱


 >>> a=[1, 2, 3, 4, 5]

 >>> a[0:2]

 [1, 2] 

 앞에서 배운 슬라이싱 개념과 동일

 >>> a=[1, 2, 3, 4, 5]

 >>> b=a[:2] ← 처음부터 a[1]까지

 >>> c=a[2:] ← a[2]부터 마지막까지

 >>> b

 [1, 2]

 >>> c

 [3, 4, 5]

 >>> a=[1, 2, 3, ['a', 'b', 'c'], 4, 5]

 >>> a[2:5] ← a[2]부터 a[4]까지

 [3, ['a', 'b', 'c'], 4]

 >>> a[3][:2]

 ['a', 'b']

 중첩된 리스트에서 슬라이싱하기



리스트의 연산자


 >>> a=[1, 2, 3]

 >>> b=[4, 5, 6]

 >>> a + b

 [1, 2, 3, 4, 5, 6]

 리스트 더하기: '+' 기호를 이용하여 2개의 리스트를 합침

 >>> a = [1, 2, 3]

 >>> a * 3

 [1, 2, 3, 1, 2, 3, 1, 2, 3]

 리스트 반복하기: '*' 기호를 이용하여 반복되는 리스트 만들기



리스트의 수정, 변경과 삭제


 >>> a = [1, 2, 3]

 >>> a[2] = 4

 >>> a

 [1, 2, 4]

 리스트에서 하나의 값 수정하기: a[2]요소값 3에서 4로 변경

 >>> a[1:2]

 [2]

 >>> a[1:2] = ['a', 'b', 'c']

 >>> a

 [1, 'a', 'b', 'c', 4]

 리스트에서 연속된 범위 값 수정하기: a[1:2]값인 2를 ['a', 'b', 'c']로 변경

 ※ a[1:2] = ['a', 'b', 'c'] 와 a[1] = ['a', 'b', 'c'] 는 전혀 다른 결과 값을 가진다.
 >>> a[1] = ['a', 'b', 'c']
 >>> a
 >>> [1, ['a', 'b', 'c'], 4]
 >>> a[1:3] = []
 >>> a
 [1, 'c', 4]
 리스트 요소 삭제 "[]": [1, 'a', 'b', 'c', 4] 값에서 a[1:3] 값인 a[1], a[2]의 값을 삭제한 [1, 'c', 4]가 된다.
 >>> a
 [1, 'c', 4]
 >>> del a[1]
 >>> a
 [1, 4]
 리스트 요소 삭제 "del": a[1]값인 'c'를 삭제



리스트 관련 함수들


 >>> a = [1, 2, 3]

 >>> a.append(4)

 >>> a

 [1, 2, 3, 4]

 리스트에 요소 추가(append): append(x)는 리스트 맨 마지막에 x를 추가시키는 함수이다.

 >>> a.append([5,6])

 >>> a

 [1, 2, 3, 4, [5, 6]]

 >>> a = [1, 4, 3, 2]

 >>> a.sort()

 >>> a

 [1, 2, 3, 4]

 리스트 정렬(sort): 리스트의 요소들을 순서대로 정렬한다. [숫자, 알파벳 정렬]

 >>> a =['a', 'c', 'b']

 >>> a.sort()

 >>> a

 >>> ['a', 'b', 'c']

 >>> a ['a', 'c', 'b']

 >>> a.reverse()

 >>> a

 >>> ['b', 'c', 'a']

 리스트 뒤집기(reverse): 리스트를 역순으로 뒤집는다. [역순 정렬 X]

 >>> a = [1, 2, 3]

 >>> a.index(3) //a[2]의 요소

 2

 >>> a.index(1) //a[0]의 요소

 0

 위치 반환(index): index(x)함수는 리스트에 x라는 값이 있으면 x값의 위치값을 리턴한다. 

 [a.index(0) 값은 존재하지 않음]

 >>> a = [1, 2, 3]

 >>> a.insert(0, 4) //a[0]위치에 4삽입

 [4, 1, 2, 3]

 >>> a.insert(3, 5)

 [4, 1, 2, 5, 3]

 리스트에 요소 삽입(insert): insert(a, b)는 리스트 a번째 위치에 b를 삽입하는 함수이다.

 >>> a= [1, 2, 3, 1, 2, 3]

 >>> a.remove(3)

 [1, 2, 1, 2, 3]

 리스트 요소 제거(remove): remove(x)는 리스트에서 첫번째로 나오는 x를 삭제하는 함수이다.

 >>> a = [1, 2, 3]

 >>> a.pop()

 3

 >>> a

 [1, 2]

 리스트 요소 끄집어내기(pop): 리스트의 맨 마지막 요소를 돌려 주고 그 요소는 삭제한다.

 [a.pop(x)는 리스트의 x 번째 요소를 돌려주고 그 요소를 삭제]

 >>> a = [1, 2, 3]

 >>> a.pop(1)

 2

 >>> a

 [1, 3]

 >>> a = [1, 2, 3, 1]

 >>> a.count(1)

 2

 리스트에 포함된 요소 x의 개수 세기(count): count(x)는 리스트 내에 x가 몇개 있는지 개수를 알려준다.

 >>> a = [1, 2, 3]

 >>> a.extend([4, 5])

 >>> a

 [1, 2, 3, 4, 5]

 >>> b = [6, 7]

 >>> a.extend(b)

 >>> a

 [1, 2, 3, 4, 5, 6, 7]

 리스트 확장(extend): extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a리스트에 x리스트를 더한다.

 ["a.extend([4, 5])", "a += [4, 5]",  "a = a + [4, 5]" 셋다 같은표현]