http://www.python.org/downloads에서 다운로드 하되, 설치 시 Add python.exe to PATH(파이썬이 어느 곳에서든지 실행될 수 있게 해주는 것)을 반드시 선택해야함
a = 123
a = -123
a = 0
a = 1.2
a = -3.45
a = 0o177
a = 0x8ff
b = 0xABC
3 ** 4 = 81
-> 3의 4제곱
7 % 3
-> 1
3 % 7
-> 3
7 // 4
-> 1
"Python is good"
"a"
"123"
print('Python Start!')
print("Python Start!")
print("""Python Start!""") # 여러줄 입력 시
print('''Python Start!''') # 여러줄 입력 시
\n 문자열 안에서 줄바꿈
\t 문자열 사이에 탭 간격
\\ 문자 \를 그대로 표현
\` 문자 `를 그대로 표현
\" 문자 "를 그대로 표현
>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
>>> a = "python"
>>> a * 2
'pythonpython'
print('P', 'Y', 'T', 'H','O','N', sep='')
print('010', '7777', '7777', sep='-')
print('python', 'google.com', sep='@')
연속적인 객체들에(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법을 의미
a[start : end : step]start, end, step 모두 양수와 음수를 가질 수 있음start: 슬라이싱을 시작할 시작위치end: 슬라이싱을 끝낼 위치로 end는 포함하지 않음step: stride(보폭)라고도 하며 몇개씩 끊어서 가져올지와 방향을 정함a = ['a', 'b', 'c', 'd', 'e']
// Index References
-------------------------------
| a | b | c | d | e |
-------------------------------
| 0 | 1 | 2 | 3 | 4 | // 양수의 경우
-------------------------------
| -5 | -4 | -3 | -2 | -1 | // 음수의 경우
-------------------------------a[ start : ] : 특정 시작위치부터 끝까지 가져오기>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 1 : ]
['b', 'c', 'd', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -3 : ]
['c', 'd', 'e']a[ : end ] : 시작점부터 특정 위치직전까지 가져오기>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : 2 ]
['a', 'b']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : -1 ]
['a', 'b', 'c', 'd']a[ start : end ] : 특정 위치부터 특정 위치직전까지 모두 가져오기>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 2 : 4 ]
['c', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -4 : -2 ]
['b', 'c']a[ start : end : step ] : step값으로 이동하면서 가져오기step이 양수일 때: 오른쪽으로 step만큼 이동하면서 가져옴step이 음수일 때: 왼쪽으로 step만큼 이동하면서 가져옴>>> a = ['a', 'b', 'c', 'd', 'e']
# 2칸씩 이동하면서 가져옵니다.
>>> a[ : : 2 ]
['a', 'c', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 3칸씩 이동하면서 가져옵니다.
>>> a[ -5 : : 3 ]
['a', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 전체를 거꾸로 가져옵니다.
>>> a[ : : -1 ]
['e', 'd', 'c', 'b', 'a']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 3 : : -1 ]
['d', 'c', 'b', 'a']방법1) %
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
방법2) . format()
문자열 내에 중괄호 { } 를 집어 넣고 뒤에서 .format(값1, 값2, ...) 을 입력하면 이 값들이 문자열 내의 중괄호 부분에 들어가게 됩니다( 문자열 안 중괄호에 인덱스값 사용가능)
방법3) .format(name = “value”)
마치 변수를 사용하는 것처럼 .format 내에서 이름과 값을 정의해두고 문자열 안 중괄호에 name을 넣어 할당한다(인덱스 값 X)
#방법1
print("나는 %d살입니다." % 20) # %d 정수를 받음
print("나는 %s을 좋아해요" %"파이썬") # %s 문자열 받음
print("Apple은 %c 로 시작해요" %"A") # %c 한글자만 받음
print("나는 %s살입니다" %20)
print("나는 %s색과 %s색을 좋아해요" %("파란","빨간")) # 두개의 값을 받음
#방법2
print("나는 {}살입니다.".format(20))
print("나는 {}색과 {}색을 좋아해요".format("파란","빨간"))
print("나는 {1}색과 {0}색을 좋아해요".format("파란","빨간")) #숫자로 순서변경
#방법3
print("나는 {age}살이며, {color}색을 좋아해요".format(age = 20, color = "빨간"))
print("나는 {color}살이며, {age}색을 좋아해요".format(age = 20, color = "빨간"))
#방법4 (v3.6 이상~) f-string
age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")
자리수 설정
print('%10s' % ('nice')) # %10s로 총 자리수 정함
> nice
print('{:>10}'.format('nice')) # {:>10}열자리수 확보하겠다고 선언/ string만 s생략 가능
> nice
print('%-10s' % ('nice')) #음수일 때 왼쪽 정렬
>nice
print('{:10}'.format('nice')) #왼쪽 정렬
>nice
print('{:_>10}'.format('nice')) # 공백/ 글자 설정
>______nice
print('{:^10}'.format('nice')) #중앙 정렬
> nice
print('%.5s' % ('nicepPython')) #기준 이상 삭제
>nicep
print('{:10.5}'.format('pythonstrudy')) # 10개의 공간 확보 5개만 출력
>pytho
print('%f' % (3.15125125151))
>3.151251
print('%1.2f' % (3.15125125151)) # 1개 정수 2개 소수
>3.15
print('%06.2f' % (3.14159293185)) # 총6자리지만 안되면 0으로 채움 소수 2자리
>003.14
print("{:06.2f}".format(3.14159293185)) # 003.14
>003.14
>>> a = "hobby"
>>> a.count('b')
2
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> ",".join('abcd')
'a,b,c,d'
>>> a = "hi"
>>> a.upper()
'HI'
>>> a = "HI"
>>> a.lower()
'hi'
>>> a = " hi "
>>> a.lstrip()
'hi '
>>> a= " hi "
>>> a.rstrip()
' hi'
>>> a = " hi "
>>> a.strip()
'hi'
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
a.split()처럼 괄호 안에 아무 값도 넣어 주지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 준다. 만약 b.split(':')처럼 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다. 이렇게 나눈 값은 리스트에 하나씩 들어가게 된다.
>>> odd = [1, 3, 5, 7, 9]
리스트를 만들 때는 위에서 보는 것과 같이 대괄호[]로 감싸 주고 각 요솟값은 쉼표(,)로 구분해 준다.
>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]
>>> f = list()
리스트 안에는 어떠한 자료형도 포함시킬 수 있다.
>>> a = [1, 2, 3]
>>> a[0]
1
>>> a[-1]
3
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
인덱스 번호로 리스트 인덱싱 가능
위에서 설명한 것과 동일
>>> 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]
>>> len(a)
3
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a.append([5,6])
>>> a
[1, 2, 3, 4, [5, 6]]
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
>>> a = [1,2,3]
>>> a.index(3)
2
>>> a.index(1)
0
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
>>> a
[4, 1, 2, 3]
insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수로, 위 예는 0번째 자리, 즉 첫 번째 요소(a[0]) 위치에 값 4를 삽입하라는 뜻이다.
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]
첫 번째로 나오는 값 삭제, 여러 개 있으면 제일 앞에 것만 삭제함
>>> a = [1,2,3]
>>> a.pop()
3
>>> a
[1, 2]
맨 마지막 요소를 리턴하고 해당 요소 삭제, ()안에 번호를 쓰면 해당 인덱스 번호의 요소를 리턴하고 삭제함
>>> a = [1,2,3,1]
>>> a.count(1)
2
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(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 됨, a.extend([4, 5])과 a += [4, 5]은 동일함.
>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1, 2, 3)
>>> t4 = 1, 2, 3
>>> t5 = ('a', 'b', ('ab', 'cd'))
t2 = (1,)처럼 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 함t4 = 1, 2, 3처럼 괄호( )를 생략해도 된다>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t3 = t1 + t2
>>> t3
(1, 2, 'a', 'b', 3, 4)
t1, t2 요솟값이 바뀌는 게 아닌, 새로운 튜플 t3를 생성
>>> t2 = (3, 4)
>>> t3 = t2 * 3
>>> t3
(3, 4, 3, 4, 3, 4)
더하기와 마찬가지로 새로운 튜플 생성
>>> dic = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> a = {1: 'hi'}
>>> b = { 'a': [1,2,3]}
value값에 리스트도 넣을 수 있음.
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}
a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각각 2와 'b'인 {2 : 'b'} 딕셔너리 쌍이 추가됨.
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}
>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}
del a[key]처럼 입력하면 지정한 Key에 해당하는 {key : value} 쌍이 삭제된다.
>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99
>>> a = {1:'a', 2:'b'}
>>> a[1]
'a'
>>> a[2]
'b'
딕셔너리이름['key'] 명령어를 사용하면 value값을 불러옴
>>> a = {1:'a', 1:'b'}
>>> a
{1: 'b'}
>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
딕셔너리 a의 Key만을 모아서 dict_keys 객체를 리턴
>>> a.values()
dict_values(['pey', '010-9999-1234', '1118'])
>>> a.items()
dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])
>>> a.clear()
>>> a
{}
>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'010-9999-1234'
a['name'] 과 동일한 결과값을 리턴
딕셔너리에 존재하지 않는 키로 값을 가져오려고 할 경우 a['nokey'] 방식은 오류를 발생시키고 a.get('nokey') 방식은 None을 리턴한다는 차이가 있다.
>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False
>>> 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)
{4, 5, 6}
intersection() 함수도 동일
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
'|' 기호로 합집합 구하기 가능
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
union함수도 동일
>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}
>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}
>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}
>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}
"python" : 참
"" : 거짓
[1, 2, 3] : 참
[] : 거짓
(1, 2, 3) : 참
() : 거짓
{'a': 1} : 참
{} : 거짓
1 : 참
0 : 거짓
None : 거짓
>>> bool([1,2,3])
True
>>> bool([])
False
>>> bool(0)
False
>>> bool(3)
True
>>> a = [1,2,3]
>>> b = a
>>> id(a)
4303029896
>>> id(b)
4303029896
>>> a is b # a와 b가 가리키는 객체는 동일한가?
True
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)
>>> b is a
False