사칙연산(+, -, *, /)
** 연산자
x의 y제곱
% 연산자
: 나눗셈 후 나머지를 반환
// 연산자
: 나눗셈 후 몫을 반환
>>> food = "Python's favorite food is perl"
>>> say = '"Python is very easy." he says.'
>>> multiline='''
... Life is too short
... You need python
... '''
문자열 더해서 연결하기(Concatenation)
문자열 곱하기
문자열 길이 구하기
>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
>>> a[-1]
'n'
>>> a[0:4]
'Life'
>>> a[:17]
'Life is too short' // 처음부터 끝 번호
>>> a[19:]
'You need Python' // 시작 번호부터 그 문자열의 끝까지
>>> a = "Pithon"
>>> a[1]
'i'
>>> a[1] = 'y'
>>> "I eat %d apples." % 3
'I eat 3 apples.'
>>> 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.'
>>> "Error is %d%%." % 98
'Error is 98%.'
>>> "%10s" % "hi"
' hi'
>>> "%0.4f" % 3.42134234
'3.4213'
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
revered를 이용해 문자열을 거꾸로 입력후 ”에 넣어출력합니다.
s = 'Reverse this strings'
print ''.join(reversed(s))
ex 1)
s = 'Reverse this strings'
s = [::-1]
print s
ex 2)
print'Reverse this strings'[::-1]
>>> a = "hobby"
>>> a.count('b')
2
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
👉 문자열 중 문자 b가 처음으로 나온 위치를 반환
👉 만약 찾는 문자나 문자열이 존재하지 않는다면 -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
👉 find 함수와 다른 점? 문자열 안에 존재하지 않는 문자를 찾으면 오류가 발생한다
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a','b','c','d'])
'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']
리스트명 = [요소1, 요소2, 요소3, ...]
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[-1]
3
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[1, 2]
>>> c
[3, 4, 5]
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5]
[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]
>>> 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]
>>>str(a[2]) + "hi"
숫자 3을 str 함수를 사용해서 문자 '3'으로 바꾸어 주어야 한다.
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
>>> a = [1, 2, 3, 4, 5]
>>> del a[2:]
>>> a
[1, 2]
>>> 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.sort()
>>> a
['a', 'b', 'c']
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
값이 있으면 위치 값 반환
값이 없으면 존재하지 않기 때문에 값 오류(ValueError)가 발생
>>> a = [1,2,3]
>>> a.index(3)
2
>>> a.index(1)
0
>>> a.index(0) //ValueError
insert(a, b)는 리스트의 a번째 위치에 b를 삽입
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
>>> a
[4, 1, 2, 3]
>>> a.insert(3, 5)
>>> a
[4, 1, 2, 5, 3]
리스트에서 첫 번째로 나오는 x를 삭제
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2]
pop()
맨 마지막 요소를 돌려주고 그 요소는 삭제
>>> a = [1,2,3]
>>> a.pop()
3
>>> a
[1, 2]
pop(x)
x번째 요소를 돌려주고 그 요소는 삭제
>>> a = [1,2,3]
>>> a.pop(1)
2
>>> a
[1, 3]
리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려줌
>>> a = [1,2,3,1]
>>> a.count(1)
2
리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.
a.extend([4, 5])는 a += [4, 5]와 동일하다.
>>> 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]
리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다.
👉 튜플은 값을 변화시킬 수 없다는 점만 제외하면 리스트와 완전히 동일하다.
{Key1:Value1, Key2:Value2, Key3:Value3, ...}
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a = {1: 'hi'}
>>> a = { 'a': [1,2,3]}
>>> 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'}
>>> a
{1: 'b'}
>>> a = {[1,2] : 'hi'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
>>> for k in a.keys():
... print(k)
...
name
phone
birth
>>> list(a.keys())
['name', 'phone', 'birth']
>>> a.values()
dict_values(['pey', '0119993323', '1118'])
>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
>>> a.clear()
>>> a
{}
공통점: 동일한 결괏값 반환됨
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a['name']
'pey'
차이점 : 존재하지 않는 키(nokey)로 값을 가져오려고 할 경우
get :
1) None은 "거짓"을 반환해줌
2) get(x, '디폴트 값') : 찾으려는 Key 값이 없을 경우 디폴트 값을 대신
배열 : KeyError
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
get : 1)
>>> print(a.get('nokey'))
None
get : 2)
>>> a.get('foo', 'bar')
'bar'
배열 : KeyError
>>> print(a['nokey'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nokey'
>>> a = {'name':'pey', 'phone':'0119993323', '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'}
인덱싱으로 값을 얻을 수 없다.
set 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환한후 해야 한다.
>>> 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}
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}
>>> s = set([1,2,3])
>>> s.add(4)
>>> s.update([5,6,7])
>>> s.remove(7)
>>> s
{1, 2, 3, 4, 5, 6}
True - 참
False - 거짓
type(x) : x의 자료형을 확인하는 파이썬의 내장 함수 ex) type(a)
문자열 참 거짓을 식별
>>> bool('python')
True
>>> bool('')
False
배열 참 거짓을 식별
>>> 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, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
>>> from copy import copy
>>> b = copy(a)
>>> b is a
False
iterable한 오브젝트를 생성하기 위한 방법중 하나로 파이썬에서 사용할 수 있는 유용한 기능중 하나이다.
List Comprehension (LC)
Set Comprehension (SC)
Dict Comprehension (DC)
Generator Expression (GE)
Generator의 경우 comprehension과 형태는 동일하지만 특별히 expression이라고 부른다.
List comprehension은 리스트를 쉽게 생성하기 위한 방법이다.
# 20까지의 짝수를 출력하기 위해 다음과 같은 LC를 사용할 수 있다
evens = [x * 2 for x in range(11)]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# 리스트의 모든 원소값을 정규화 시킨 후 상수값을 더하는 LC
vals = [32, 12, 96, 42, 32, 93, 31, 23, 65, 43, 76]
amount = sum(vals)
norm_and_move = [(x / amount) + 1 for x in vals]
# [1.0587155963302752, 1.0220183486238532, 1.1761467889908257, 1.0770642201834861, 1.0587155963302752, 1.1706422018348623, 1.0568807339449542, 1.0422018348623854, 1.1192660550458715, 1.0788990825688074, 1.1394495412844037]
{}
: SC를 사용하면 중복값이 없는 집합을 얻을 수 있다
# 다음의 LC는 중복된 값들을 포함한다
no_primes = [j for i in range(2, 9) for j in range(i * 2, 50, i)]
# [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 10, 15, 20, 25, 30, 35, 40, 45, 12, 18, 24, 30, 36, 42, 48, 14, 21, 28, 35, 42, 49, 16, 24, 32, 40, 48]
# SC를 사용하면 중복값이 없는 집합을 얻을 수 있다
no_primes = {j for i in range(2, 9) for j in range(i * 2, 50, i)}
# {4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 45, 46, 48, 49}
# 두 리스트를 하나의 dict로 합치는 DC. 하나는 key, 또 다른 하나는 value로 사용한다
subjects = ['math', 'history', 'english', 'computer engineering']
scores = [90, 80, 95, 100]
score_dict = {key: value for key, value in zip(subjects, scores)}
# {'math': 90, 'history': 80, 'english': 95, 'computer engineering': 100}
# 튜플 리스트를 dict 형태로 변환하는 DC
score_tuples = [('math', 90), ('history', 80), ('english', 95), ('computer engineering', 100)]
score_dict = {t[0]: t[1] for t in score_tuples}
# {'math': 90, 'history': 80, 'english': 95, 'computer engineering': 100}
# 다음 Generator는 제곱수를 만들어낸다
gen = (x**2 for x in range(10))
print(gen)
# <generator object <genexpr> at 0x105bde5c8>
print(next(gen)) # call 1
# 0
print(next(gen)) # call 2
# 1
# 'next' 함수 호출을 10번 반복
print(next(gen)) # call 10
# 81
print(next(gen)) # call 11
"""
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
"""
# Yes, it is an just generator. You can sum the yielding values.
# GE로 생성한 Generator도 yield를 가진 함수로 생성한 것과 동일한 Generator이기 때문에, 똑같이 sum을 사용할 수 있다. (iterable 객체)
gen = (x**2 for x in range(10))
sum_of_squares = sum(gen)
# 285
########### in ###########
if 'p' in 'python':
print(True)
else:
print(False)
-------------------------
True
########### not in ###########
if 'k' not in 'python':
print(True)
else:
print(False)
-------------------------
True
############## in ##############
if 'a' in ['a','b','c']:
print(True)
else:
print(False)
--------------------------------
True
############## not in ##############
if 'd' not in ['a','b','c']:
print(True)
else:
print(False)
--------------------------------
True
############# in #############
if 'a' in ('a','b','c'):
print(True)
else:
print(False)
-------------------------
True
############# not in #############
if 'd' not in ('a','b','c'):
print(True)
else:
print(False)
-------------------------
True
########### in ###########
if 'a' in {'a':1,'b':2}:
print(True)
else:
print(False)
---------------------------
True
########### not in ###########
if 'c' not in {'a':1,'b':2}:
print(True)
else:
print(False)
---------------------------
False
lambda x: int(x)
문자열 변수를 정수형으로 변환.
lambda x,y: x>y
x, y 값을 비교.
lambda x: x['key']
딕셔너리에서 key를 이용해 value를 얻음.
# min, max 함수
names = ['Suh', 'Adrian', 'Bill', 'Jonathan']
# longest : 길이가 가장 긴 이름
longest = max(names, key= lambda n: len(n))
print(longest)
# Jonathan
key 를 lambda n: len(n) 로 부여해 가장 길이가 긴 이름을 리턴한다.
keys = [{'key': 8}, {'key': 5}, {'key': 9}, {'key': 3}]
# sort 함수
keys.sort(key = lambda x: x['key'])
# [{'key': 3}, {'key': 5}, {'key': 8}, {'key': 9}]
👉 keys 리스트를 내부의 'key' 들의 value를 기준으로 정렬하였다.
# filter 함수
filter(lambda x: x['key']<5, keys)
👉 'key' 들의 value가 5보다 작은 요소들을 가져온다.
# map 함수
map(lambda x: x['key']+5, keys)
👉 모든 'key' 의 value에 5를 더한다.
🐥 출처 : https://wikidocs.net/book/1 점프 투 파이썬
좋은 자료 감사합니다 ..✨
comprehension
https://mingrammer.com/introduce-comprehension-of-python/