Wisdom’s Cloud
[PYTHON] 2. 파이썬 자료형 본문
숫자형(Number)
항목 | 파이썬 사용 예 |
정수형(Integer) | 123, -345, 0 |
실수형(Floating-point) | 123.45, -1234.5, 3.4e10 |
8진수(Octal) | 0o34, 0o25 |
16진수(Hexadecimal) | 0x2A, 0xFF |
-
숫자형을 활용하기 위한 연산자
# 사칙연산: +, -, *, /
>>> a = 3
>>> b = 4
>>>
>>> a + b
7
>>> a - b
-1
>>> a * b
12
>>> a / b
0.75
>>>
# ** 연산자: a의 b 제곱
>>> a = 2
>>> b = 3
>>>
>>> a ** b
8
>>>
# % 연산자: 나눗셈 후 나머지를 반환
>>> a = 7
>>> b = 3
>>>
>>> a % b
1
>>>
# // 연산자: 나눗셈 후 몫을 반환
>>> a = 7
>>> b = 3
>>>
>>> a // b
2
문자열(String) 자료형
-
문자열을 만드는 방법
# 큰 따옴표로 양쪽 둘러싸기
>>> "Hello World"
'Hello Wolrd'
>>>
# 작은 따옴표로 양쪽 둘러싸기
>>> 'Python is fun'
'Python is fun'
>>>
# 큰 따옴표 3개를 연속으로 써서 양쪽 둘러싸기
>>> """Life is too short, You need python"""
'Life is too short, You need python'
>>>
# 작은 따옴표 3개를 연속으로 써서 양쪽 둘러싸기
>>> '''Life is too short, You need python'''
'Life is too short, You need python'
-
문자열 안에 작은 따옴표나 큰 따옴표를 포함시키기
# Python's favorite food is perl
# 문자열에 작은 따옴표 포함시키기(문자열을 큰 따옴표로 둘러싸기)
>>> food = "Python's favorite food is perl"
>>> food
"Python's favorite food is perl"
>>>
# 문자열에 작은 따옴표 포함시키기(\' 사용하기)
>>> food = 'Python\'s favorite food is perl'
>>> food
"Python's favorite food is perl"
>>>
>>>
# "Python is very easy." he says.
# 문자열에 큰 따옴표 포함시키기(문자열을 작은 따옴표로 둘러싸기)
>>> say = '"Python is very easy." he says.'
>>> say
'"Python is very easy." he says.'
>>>
# 문자열에 큰 따옴표 포함시키기(\" 사용하기)
>>> say = "\"Python is very easy.\" he says."
>>> say
'"Python is very easy." he says.'
-
여러 줄인 문자열을 변수에 대입하기
# Life is too short
# You need python
# \n 사용하기
>>> multiline = "Life is too short\nYou need python"
>>> print(multiline)
Life is too short
You need python
>>>
# 연속된 작은 따옴표 3개 사용하기
>>> multiline = '''Life is too short
You need python'''
>>> print(multiline)
Life is too short
You need python
>>>
# 연속된 큰 따옴표 3개 사용하기
>>> multiline = """Life is too short
You need python"""
>>> print(multiline)
Life is too short
You need python
-
문자열 연산하기
# 문자열 더해서 연결하기
>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
>>>
# 문자열 곱하기
>>> a = "python"
>>> a * 2
'pythonpython'
>>>
# 문자열 길이 구하기
>>> a = "Life is too short"
>>> len(a)
17
-
문자열 인덱싱(Indexing)과 슬라이싱(Slicing)
L | i | f | e | i | s | t | o | o | s | h | o | r | t | , | Y | o | u | n | e | e | d | p | y | t | h | o | n | ||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
-9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
# 문자열 인덱싱
>>> a = "Life is too short, You need python"
>>> a[0]
'L'
>>> a[12]
's'
>>> a[-1]
'n'
>>>
# 문자열 슬라이싱
>>> a = "Life is too short, You need python"
>>> b = a[0] + a[1] + a[2] + a[3]
>>> b
'Life'
>>> a[0:4]
'Life'
>>> a[19:]
'You need python'
>>> a[:]
'Life is too short, You need python'
>>> a[19:-7]
'You need'
-
문자열 포매팅(Formatting)
포맷 코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(Character) |
%d | 정수(Integer) |
%f | 부동 소수(Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal %(문자 '%' 자체) |
# 숫자 바로 대입하기
>>> "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 eat %d apples. so I was sick for %s days." %(number, day)
'I eat 10 apples. so I was sick for three days.'
>>>
>>>
# %s 포맷 코드는 어떤 형태의 값이든 변환해서 넣을 수 있음
>>> "I have %s apples" %3
'I have 3 apples'
>>> "rate is %s" %3.234
'rate is 3.234'
>>>
>>>
# 정렬과 공백
>>> "%10s" %"hi" # 전체 길이가 10개의 문자열 공간에서 대입되는 값을 오른쪽으로 정렬
' hi'
>>> "%-10sjane" %"hi" # 전체 길이가 10개의 문자열 공간에서 대입되는 값을 왼쪽으로 정렬
'hi jane'
>>>
# 소수점 표현하기
>>> "%0.4f" %3.123456 # 소수점 4번째 자리까지만 나타냄
'3.1234'
>>> "%10.4f" %3.123456 # 소수점 4번째 자리까지만 나타내고, 전체 길이가 10개인 문자열 공간에서 오른쪽으로 정렬
' 3.1234'
-
format 함수 사용하기
# 숫자 바로 대입하기
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
>>>
# 문자열 바로 대입하기
>>> "I eat {0} apples".format("five")
'I eat five apples'
>>>
# 숫자 값을 가진 변수로 대입하기
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
>>>
# 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate {0} apples. So I was sick for {1} days.".format(number, day)
'I ate 10 apples. So I was sick for three days.'
>>>
# 이름으로 넣기
>>> "I ate {number} apples. So I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. So I was sick for 3 days.'
>>>
# 인덱스와 이름을 혼용해서 넣기
>>> "I ate {0} apples. So I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. So I was sick for 3 days.'
>>>
# 왼쪽 정렬하기
>>> "{0:<10}".format("hi")
'hi '
>>>
# 오른쪽 정렬하기
>>> "{0:>10}".format("hi")
' hi'
>>>
# 가운데 정렬하기
>>> "{0:^10}".format("hi")
' hi '
>>>
# 공백 채우기
>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
>>>
# 소수점 표현하기
>>> y = 3.123456
>>> "{0:0.4f}".format(y)
'3.1234'
>>> "{0:10.4f}".format(y)
' 3.1234'
>>>
# { 또는 } 문자 표현하기
>>> "{{ and }}".format()
'{ and }'
-
f 문자열 포매팅 기능 사용하기
# f 문자열 포매팅 기능은 파이썬 3.6 버전부터 사용 가능함
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
>>>
>>> age = 30
>>> f'나는 내년에 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'
>>>
>>> d = {'name':'홍길동', 'age'=30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
>>>
>>> f'{"hi":<10}'
'hi '
>>> f'{"hi":>10}'
' hi'
>>> f'{"hi":^10}'
' hi '
>>>
>>> f'{"hi":=^10}'
'====hi===='
>>> f'{"hi":!<10}'
'hi!!!!!!!!'
>>>
>>> y = 3.123456
>>> f'{y:0.4f}'
'3.1234'
>>> f'{y:10.4f}'
' 3.1234'
>>>
>>> f'{{ and }}'
'{ and }'
-
문자열 관련 함수 사용하기
# 문자 개수 세기(count)
>>> a = "hobby"
>>> a.count('b') # 문자 b의 개수를 반환
2
>>>
# 위치 알려주기 1(find)
>>> a = "Python is the best choice"
>>> a.find('b') # 문자 b가 처음 나온 위치를 반환
14
>>> a.find('k') # 찾는 문자가 존재하지 않는다면 -1을 반환
-1
>>>
# 위치 알려주기 2(index)
>>> a = "Life is too short"
>>> a.index('t') # 문자 t가 처음 나온 위치를 반환
8
>>> a.index('k') # 찾는 문자가 존재하지 않는다면 오류 발생
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>>
# 문자열 삽입하기(join)
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'
>>>
# 소문자를 대문자로 바꾸기(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'
>>>
# 문자열 나누기(split)
>>> a = "Life is too short"
>>> a.split() # 공백을 기준으로 문자열 나눔
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':') # : 기호를 기준으로 문자열 나눔
['a', 'b', 'c', 'd']
리스트(List) 자료형
>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]
-
리스트의 인덱싱과 슬라이싱
# 리스트의 인덱싱
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[0]
1
>>> a[0] + a[2]
4
>>> a[-1]
3
>>>
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[-1]
['a', 'b', 'c']
>>> a[3]
['a', 'b', 'c']
>>> a[-1][0]
'a'
>>> a[-1][1]
'b'
>>> a[-1][2]
'c'
>>>
>>>
# 리스트의 슬라이싱
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
[1, 2]
>>>
>>> a = "12345"
>>> a[0:2]
'12'
>>>
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[1, 2]
>>> c
[3, 4, 5]
-
리스트 연산하기
# 리스트 더하기(+)
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>>
# 리스트 반복하기(*)
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>>
# 리스트 길이 구하기(len)
>>> a = [1, 2, 3]
>>> len(a)
3
-
리스트의 수정과 삭제
# 리스트에서 값 수정하기
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
>>>
>>>
# 리스트 요소 삭제하기(del)
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
>>>
>>> a = [1, 2, 3, 4, 5]
>>> del a[2:]
>>> a
[1, 2]
-
리스트 관련 함수 사용하기
# 리스트에 요소 추가하기(append)
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a.append([5, 6])
>>> a
[1, 2, 3, 4, [5, 6]]
>>>
# 리스트 정렬하기(sort)
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a = ['a', 'c', 'b']
>>>
# 리스트 뒤집기(reverse)
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
>>>
# 리스트의 위치 반환하기(index)
>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0
>>> a.index(0) # a 리스트에 존재하지 않는 값은 오류 발생
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 0 in not in list
>>>
# 리스트에 요소 삽입하기(insert)
>>> a = [1, 2, 3]
>>> a.insert(0, 4) # a[0] 위치에 4 삽입
[4, 1, 2, 3]
>>> a.insert(3, 5) # a[3] 위치에 5 삽입
[4, 1, 2, 5, 3]
>>>
# 리스트 요소 제거하기(remove)
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3) # a 리스트에서 첫 번째로 나오는 3을 삭제
[1, 2, 1, 2, 3]
>>> a.remove(3) # a 리스트에서 첫 번째로 나오는 3을 삭제
[1, 2, 1, 2]
>>>
# 리스트 요소 끄집어내기(pop)
>>> a = [1, 2, 3]
>>> a.pop() # a 리스트의 맨 마지막 요소를 끄집어내고 삭제
3
>>> a
[1, 2]
>>> a = [1, 2, 3]
>>> a.pop(1) # a[1] 값을 끄집어내고 삭제
2
>>> a
[1, 3]
>>>
# 리스트에 포함된 요소 x의 개수 세기(count)
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2
>>>
# 리스트 확장하기(extend)
>>> a = [1, 2, 3]
>>> a.extend([4, 5]) # extend(x)에서 x에는 리스트만 올 수 있음
>>> a
[1, 2, 3, 4, 5]
>>> b = [6, 7]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7]
튜플(Tuple) 자료형
>>> t1 = ()
>>> t2 = (1,) # 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 함
>>> t3 = (1, 2, 3)
>>> t4 = 1, 2, 3 # 괄호 ()를 생략해도 무방함
>>> t5 = ('a', 'b', ('ab', 'cd'))
# 리스트는 []로 둘러싸고, 그 값의 생성/삭제/수정이 가능하지만
# 튜플은 ()으로 둘러싸고, 그 값을 바꿀 수 없다.
# 따라서 실제 프로그램에서는 튜플보다는 리스트를 더 많이 사용한다.
-
튜플 다루기
# 튜플 인덱싱하기
>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1
>>> t1[3]
'b'
>>>
# 튜플 슬라이싱하기
>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')
>>>
# 튜플 더하기
>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t1 + t2
(1, 2, 'a', 'b', 3, 4)
>>>
# 튜플 곱하기
>>> t2 = (3, 4)
>>> t2 * 3
(3, 4, 3, 4, 3, 4)
>>>
# 튜플 길이 구하기
>>> t1 = (1, 2, 'a', 'b')
>>> len(t1)
4
딕셔너리(Dictionary) 자료형
# 기본 딕셔너리의 모습: {Key1: Value1, Key2: Value2, Key3: Value3, ...}
>>> dic = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a = {1: 'hi'}
>>> a = {'a': [1, 2, 3]}
-
딕셔너리 쌍 추가, 삭제하기
# 딕셔너리 쌍 추가하기
>>> a = {1: 'a'}
>>> a[2] = 'b' # {2: 'b'} 추가
>>> a
{1: 'a', 2: 'b'}
>>> a['name'] = 'pey' # {'name': 'pey'} 추가
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}
>>> a[3] = [1, 2, 3] # {3: [1, ,2 ,3]} 추가
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
>>>
# 딕셔너리 요소 삭제하기
>>> a = {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
>>> del a[1] # key가 1인 key: value 쌍 삭제
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}
-
딕셔너리를 사용하는 방법
# 딕셔너리에서 Key를 사용해 Value 얻기
>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99
>>>
>>> a = {1: 'a', 2: 'b'}
>>> a[1]
'a'
>>> a[2]
'b'
>>>
>>> a = {'a': 1, 'b': 2}
>>> a['a']
1
>>> a['b']
2
>>>
>>> dic = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> dic['name']
'pey'
>>> dic['phone']
'0119993323'
>>> dic['birth']
'1118'
>>>
# 즉, 딕셔너리는 리스트나 튜플에 있는 인덱싱 방법을 적용할 수 없음
# 딕셔너리를 만들 때 주의할 사항
>>> a = {1: 'a', 1: 'b'} # 1이라는 Key를 중복으로 사용
>>> a
{1: 'b'} # 1: 'a' 쌍이 무시됨
>>>
>>> a = {[1, 2]: 'hi'} # 리스트를 Key로 사용하면 오류 발생
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
-
딕셔너리 관련 함수 사용하기
# Key 리스트 만들기(keys)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys() # a의 Key만을 모아서 dict_keys 객체에 돌려줌
dict_keys(['name', 'phone', 'birth'])
>>> list(a.keys()) # dict_keys 객체를 리스트로 변환하려면 다음과 같이 하면 됨
['name', 'phone', 'birth']
>>>
# Value 리스트 만들기(values)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.values() # a의 value만을 모아서 dict_values 객체에 돌려줌, dict_values 객체 역시 dict_keys 객체와 마찬가지로 리스트를 사용할 수 있음
dict_values(['pey', '0119993323', '1118'])
>>>
# Key, Value 쌍 얻기(items)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.items() # a의 Key와 value의 쌍을 튜플로 묶은 값을 dict_items 객체에 돌려줌, dict_items 객체 역시 dict_keys 객체와 마찬가지로 리스트를 사용할 수 있음
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
>>>
# Key:Value 쌍 모두 지우기(clear)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.clear()
>>> a
{}
>>>
# Key로 Value 얻기(get)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'
>>> a.get('foo', 'bar') # a 안에 찾으려는 Key가 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 함
'bar'
>>>
# 해당 Key가 딕셔너리 안에 있는지 조사하기(in)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False
집합(Set) 자료형
>>> s1 = set([1, 2, 3])
>>> s1
{1, 2, 3}
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}
# 집합은 중복을 허용하지 않고 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
# 따라서 집합에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한 후에 해야 한다.
>>> s1 = set([1, 2, 3])
>>> l1 = list(s1) # 리스트로 변환
>>> l1
[1, 2, 3]
>>> l1[0]
1
>>> t1 = tuple(s1) # 튜플로 변환
>>> t1
(1, 2, 3)
>>> t1[0]
1
-
교집합, 합집합, 차집합 구하기
>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])
>>>
# 교집합 구하기
>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2) # s2.intersection(s1)과 동일
{4, 5, 6}
>>>
# 합집합 구하기
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s2.union(s2) # s2.union(s2) 과 동일
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>>
# 차집합 구하기
>>> s1 - s2
{1, 2, 3}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2 - s1
{7, 8, 9}
>>> s2.difference(s1)
{7, 8, 9}
-
집합 관련 함수 사용하기
# 값 1개 추가하기(add)
>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}
>>>
# 값 여러 개 추가하기(update)
>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}
>>>
# 특정 값 제거하기(remove)
>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}
불(Bool) 자료형
>>> a = True
>>> b = False
>>> type(a) # type(x)는 x의 자료형을 확인하는 파이썬의 내장 함수
<class 'bool'>
>>> type(b)
<class 'bool'>
# 불 자료형은 참(Ture)과 거짓(False)을 나타내는 자료형이다.
# 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면("", [], (), {}) 거짓이 된다.
# 당연히 비어 있지 않으면 참이 되고, 숫자에서는 그 값이 0일 때 거짓이 된다.
-
불 연산하기
>>> bool('python')
True
>>> bool('')
False
>>>
>>> bool([1, 2, 3])
True
>>> bool([])
False
>>>
>>> bool(0)
Flase
>>> bool(3)
True
변수
# 자료형의 값을 저장하는 공간을 변수라고 한다.
# 변수를 만들 때는 =(assignment) 기호를 사용한다.
# 변수 이름 = 변수에 저장할 값
>>> a = [1, 2, 3]
# [1, 2, 3] 값을 가지는 리스트 자료형이 자동으로 메모리에 생성되고,
# 변수 a는 [1, 2, 3] 리스트가 저장된 메모리의 주소를 가리키게 된다.
>>> id(a)
1545547188872
# a 변수가 가리키는 메모리의 주소는 id 함수를 통해 확인할 수 있다.
# 즉, 만든 변수 a가 가리키는 [1, 2, 3] 리스트의 주소 값은 1545547188872임을 알 수 있다.
-
리스트 복사하기
>>> a = [1, 2, 3]
>>> b = a # b 변수에 a 변수를 대입
>>> id(a)
1545547188872
>>> id(b)
1545547188872 # a가 가리키는 대상과 b가 가리키는 대상이 동일
>>> a is b
True # a와 b가 가리키는 객체는 동일
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3] # a, b 모두 동일한 리스트를 가리키고 있기 때문에 a만 바뀌는 것이 아니라 b도 똑같이 바뀜
>>>
>>>
# b 변수를 생성할 때 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만드는 방법 1([:] 사용)
>>> a = [1, 2, 3]
>>> b = a[:] # 리스트 a의 처음 요소부터 끝 요소까지 슬라이싱
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
>>>
# b 변수를 생성할 때 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만드는 방법 2(copy 모듈 사용)
>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
-
변수를 만드는 여러 가지 방법
# 튜플로 변수 만들기
>>> a, b = ('python', 'life')
>>> (a, b) = 'python', 'life' # 튜플은 괄호 생략 가능
>>>
# 리스트로 변수 만들기
>>> [a, b] = ['python', 'life']
>>>
# 여러 개의 변수에 같은 값을 대입하기
>>> a = b = 'python'
>>>
# 두 변수의 값을 바꾸기
>>> a = 3
>>> b = 5
>>> a, b = b, a # a와 b의 값을 바꿈
>>> a
5
>>> b
3
'PYTHON' 카테고리의 다른 글
[PYTHON] 6. 파일 읽고 쓰기 (0) | 2021.02.16 |
---|---|
[PYTHON] 5. 사용자 입력과 출력 (0) | 2021.02.16 |
[PYTHON] 4. 함수 (0) | 2021.02.16 |
[PYTHON] 3. 파이썬 제어문 (0) | 2021.01.08 |
[PYTHON] 1. 파이썬의 소개와 설치 (0) | 2020.12.30 |