name="minsu"
score=90
c언어 스타일의 문자열 포맷팅
print('%s의 점수는 %d점입니다.'%(name, score))
문자열 클래스의 format 메서드 사용
print("{}의 점수는 {}점입니다.".format(name, score))
f-string 사용
print(f"{name}의 점수는 {score} 점입니다.")
출력결과는 전부 동일
minsu의 점수는 90 점입니다.
data=3
문자열 클래스의 format 메서드 사용
fmt="{{ {} }}".format(data)
print(fmt)
f-string 사용
fmt=f"{{ {data} }}"
print(fmt)
출력결과
{ 3 }
a=3
mystr=f"{a:02d}"
print(mystr) # 출력 결과 03
symbol="BTCUSDT"
print(f"{symbol:10}")
a=3.141592
mystr=f"{a:6.2f}"
print(mystr) # 출력 결과 3.14
a="hello"
b=["hello", "python"]
>>> id(a)
>>> id(b)
id(a), id(b[0]) # a객체와 b리스트의 [0]는 같은 객체
Immutable 객체는 수정불가능한 객채이며 Mutable 객체는 수정 가능한 객체
| 구분 | 타입 |
|---|---|
| Immutable 객체 | int, float, str, tuple |
| Mutable 객체 | list, dict |
>>> a="python2"
>>> id(a)
4376752800
>>> a="python3"
>>> id(a)
4376752848
>>> a=["python2", "python3"]
>>> id(a)
4557997824
>>> a.append("python4")
>>> a
['python2', 'python3', 'python4']
>>> id(a)
4557997824
>>> id(a[0])
4376752800
>>> id(a[1])
4376752848
>>> id(a[2])
4436131056
리스트 객체는 [0], [1], [2] 번이 리스트의 원소인 문자열 객체를 다시 바인딩하는 구조로 리스트에 원소를 추가하거나 삭제해도 리스트 객체의 시작 주소는 변하지 않음
== 연산자를 사용. 이는 값이 같은지를 비교함.is 연산자를 사용.>>> a=1000
>>> b=1000
>>> a==b
True
>>> a is b
False
>>> id(a), id(b)
(4557964656, 4557965008)
>>> a=3
>>> b=3
>>> id(a), id(b)
(4342996816, 4342996816)
>>> a==b
True
>>> a is b
True
even_num=[ ]
for i in range(10):
if i%2==0:
even_num.append(i)
print(even_num)
[0, 2, 4, 6, 8]
even_num=[i for i in range(10) if i%2==0]
print(even_num)
[0, 2, 4, 6, 8]
odd_num=[i for i in range(10) if i%2==1]
print(odd_num)
[1, 3, 5, 7, 9]
pow2_nums=[i*i for i in range(10)]
print(pow2_nums)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
packing
a=1,2
b=(1,2)
print(a,type(a))
print(b,type(b))
(1, 2) <class 'tuple'>
(1, 2) <class 'tuple'>
unpacking: 튜플의 왼쪽에 각 튜플의 원소를 바인딩할 변수를 적어주면 각 변수가 튜플의 원소를 바인딩하게 됨. 하나씩 인덱싱할 필요가 없어 편리.
data=(1,2,3)
n1,n2,n3=data
print(n1,n2,n3) # 출력 결과 1 2 3
scores=(1,2,3,4,5,6)
low,*others,high=scores # 나머지 값들은 other라는 변수로 바인딩하려면 변수 앞에 *를 하나 붙여줌
print(others) # 출력 결과 [2, 3, 4, 5]
함수 리턴: 함수는 하나의 값만 리턴 가능하며 여러 값을 리턴할경우 해당 값들이 튜플로 패킹된 후 튜플 객체가 리턴됨.
def foo():
return 1, 2, 3
val=foo()
print(type(val))
<class 'tuple'>
함수 호출: 튜플 언패킹 기능을 사용하면 함수 호출코드를 간소화할수 있음
def hap(n1, n2, n3, n4):
return n1+n2+n3+n4
scores=(1,2,3,4)
result=hap(*scores) # 함수 호출 시 튜플 언패킹
print(result) # 출력 결과 10
zip과 dictionary
name=['merona', 'gugucon']
price=[500,1000]
z=zip(name,price)
print(list(z))
[('merona', 500), ('gugucon', 1000)]
name=['merona', 'gugucon']
price=[500,1000]
for n, p in zip(name, price):
print(n, p)
merona 500
gugucon 1000
name=['merona', 'gugucon']
price=[500,1000]
icecream=dict(zip(name, price))
print(icecream)
{'merona': 500, 'gugucon': 1000}
data={}
ret=data.setdefault('a', 0)
print(ret, data)
ret=data.setdefault('a', 1)
print(ret, data)
data=['BTC', 'BTC', 'XRP', 'ETH', 'ETH', 'ETH']
for k in set(data):
count=data.count(k)
print(k, count)
name=['merona', 'gugucon']
price=[500,1000]
icecream={k:v for k, v in zip(name,price)}
print(icecream)
name=['merona', 'gugucon']
price=[500,1000]
icecream2={k:v*2 for k, v in zip(name, price)}
print(icecream2)
name=['merona', 'gugucon', 'bibibig']
price=[500, 1000, 600]
icecream={k:v for k, v in zip(name, price) if v<1000}
print(icecream)
class Book:
def __init__(self, title, price):
self.title=title
self.price=price
mybook=Book("파이썬을 이용한 비트코인 자동매매", 27000)
print(mybook.title, mybook.price)
from collections import namedtuple
Book=namedtuple('Book', ['title', 'price'])
mybook3=Book("파이썬을 이용한 비트코인 자동매매", 27000)
print(mybook3.title, mybook3.price)
print(mybook3[0], mybook3[1])
def print_book(title, price):
print(title, price)
print_book(*mybook3)