반응형
1. 먼저 유도식을 이용하여 어떤 흥미로운 코드를 생성할 수 있는지 살펴본다.
1.1 100 이내의 모든 주식수(i, j, k)를 포함하는 리스트 생성
w = [(i,j,k) for i in range(1, 100) for j in range(1, 100) for k in range(1,100) if k**2 == i**2 + j**2]
#앞의 21 조의 출자전환 정리를 피라미드의 코드로 인쇄하다
max_level = 50
k = 0
for now_level in range(1,max_level+1):
for i in range(max_level-now_level):
print(' ',end=' ')
for j in range(now_level-10):
if k <=20:
print(w[k],end=' ')
k += 1
else:
pass
print(' ')
실행 코드는 피코드의 수를 다음과 같이 인쇄합니다
1.2 유도식으로 엄마(mama)와 아빠(baba)를 고백하는 하트 모양 생성
print('\n'.join([''.join([('mam'[(x-y)%2]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
print('\n'.join([''.join([('bab'[(x-y)%2]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
코드를 실행하여 얻은 결과:
1.3 유도식으로 곱셈 구결표 생성
print('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
코드를 실행하여 얻은 결과:
2. 파이썬에서 세 가지 유형의 유도식을 살펴보겠습니다.
2.1 목록 도출식
[<표현> for <변수> in <반복가능객체> if <논리조건>
예:[i*4 for i in range(10) if i>3]
결과:[16, 20, 24, 28, 32, 36]
코드 해석:
먼저 for i in range(10): i가 range(10) (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)를 순서대로 취할 때
다음으로 보기 if > 3: i가 3보다 클 때
마지막으로 i*4: 결과 보기 i*4 목록 보기
아래의 이 두 가지 예를 스스로 시도해 보고, 인상을 깊게 할 수 있다
[x*x for x in range(10) if x%2==0]
[x.upper() for x in [1, 'abc', 'xyz', True] if isinstance(x, str)]
2.2 사전 유도식
{<키 표현식>:<요소 표현식> for <변수> in <반복가능 객체> if <논리 조건>}
예: {'k%d'%(x): x**3 for x in range(10) }
결과:
{'k0': 0,
'k1': 1,
'k2': 8,
'k3': 27,
'k4': 64,
'k5': 125,
'k6': 216,
'k7': 343,
'k8': 512,
'k9': 729}
코드 해석:
먼저 for x in range(10): x가 range(10) (0,1,2,3,4,5,6,7,8,9)를 차례로 취할 때
다음 보기 k%d: k는 고정값이고, %d은 x의 값을 취합니다
%(x):%(x):%(x)에 x**3의 결과를 순서대로 채우기
아래의 이 두 가지 예를 스스로 시도해 보고, 인상을 깊게 할 수 있다
{ 'k%d' %(x) : x**2 for x in range(3, 10) }
{ 'k%d' %(x) : x**2 for x in range(10) if x>5 }
2.3 집합유도식
{<요소 표현식> for <변수> in <반복가능 객체> if <논리 조건>}
예1:{x*x for x in range(-3,3)}
결과 1:{0, 1, 4, 9}
코드 해석:
먼저 for x in range(-3, 3) 보기: x가 range(10) (-3,-2, -1, 0, 1, 2)를 차례로 취할 때
이어서 x*x를 보라: 즉 집합의 원소는 (9,4,1,0,1,4)이다.
마지막으로 고등학교에서 배운 집합의 특성(비중복)으로 최종 결과를 얻을 수 있다
아래의 이 두 가지 예를 스스로 시도해 보고, 인상을 깊게 할 수 있다
{x+y for x in range(-1,5) for y in range(x)}
{x*x for x in range(10) if x%2==0}
반응형
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
파이썬의 각종 오류 보고 (0) | 2022.11.24 |
---|---|
파이썬의 다양한 방법 목록 (0) | 2022.11.24 |
로지스틱 회귀 3부작 - 로지스틱 회귀(logistics regression) 원리 - 로지스틱 회귀를 완전히 읽을 수 있게 해준다 (0) | 2022.11.23 |
Python 하늘에 가득한 눈송이를 그리다 (0) | 2022.11.23 |
파이썬 데이터 분석 - 데이터 업데이트 (0) | 2022.11.23 |