python 에서 for 순환 에서 유도 식 으로 의 구체 적 인 사용

본 고 는 순서에 따라 점진 적 인 서법 을 채택 하여 점차적으로 발전 한다.
전통 for 순환:

#  1 1000000   
#      (      )
for i in range(1,10**6+1):
 if(i%2==0):
 print(i)
#      :
#2
#4
#.
#.
#.
#1000000

요약(직관 적 으로 코드 를 평가):요 구 를 완성 할 수 있 지만 코드 가 간결 하지 않다.
개 선 된 코드 는 목록 유도 식 을 사용 합 니 다.

#  1 1000000   
#       (      )
print([i for i in range(1,10**6+1) if i%2==0])
#      :
#2
#4
#.
#.
#.
#1000000

코드 운행 속도 에서 코드 를 평가 하 겠 습 니 다.
전통 for 순환 의 운행 속도:

#  clock()            
#               CPU  ,           , time.time()   
import time
cpu_start=time.clock()
for i in range(1,10**6+1):
 if(i%2==0):
 print(i)
cpu_end=time.clock()
print("      :",cpu_end-cpu_start)
#      :
#2
#4
#.
#.
#.
#1000000
#      : 2.1866424
#  :    3.3-3.8         :DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
#  python3.3        ,         ,    per_counter(        ) process_time(        )  

목록 유도 식 운행 속도 사용:

#  clock()            
#               CPU  ,           , time.time()   
import time
cpu_start=time.clock()
print([i for i in range(1,10**6+1) if i%2==0])
cpu_end=time.clock()
print("      :",cpu_end-cpu_start)
#      :
#[2,4,6,8...1000000]
#      : 0.005884400000000012
#  :    3.3-3.8         :DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
#  python3.3        ,         ,    per_counter(        ) process_time(        )  

요약(코드 운행 속도 에서 평가):목록 유도 식 코드 를 사용 하 는 것 이 뚜렷 하고 운행 속도 가 한 수 위 입 니 다.
결론:
1.컴 파일 러 는 최적화 되 고 약자 로 인해 효율 에 영향 을 주지 않 으 며 오히려 최적화 로 효율 을 높 인 다.
2.프로그래머 의 업 무량 을 줄 이 고 실 수 를 줄인다.
3.코드 를 간소화 하고 코드 의 가 독성 을 강화 했다.
그러면 목록 해석 식 에 집합 유도 식,사전 유도 식,원 조 유도 식 이 존재 하 는 지 알 아 보 겠 습 니 다!이곳 은 더 이상 그들의 운행 속 도 를 탐구 하지 않 는 다!
집합 유도 식:

#     
#  1 1000000   
x={i for i in range(1,10**6+1) if i%2==0}
type(x)
#    :
#{2,4,6,8...1000000}
#<class 'set'>

사전 유도 식:

#                 
#      
dict={'  1': 1, '   ': 2, '   ': 3, '   ': 4}
dict_x={}
for i,j in dict.items():
  if(j%2==0):
    dict_x[i]=j
print(dict_x)
print(type(dict_x))
#{'   ': 2, '   ': 4}
#<class 'dict'>

#                 
#     
#   
#  zip   for                     
x = {i : j for i, j in zip(["  1", "   ", "   ", "   "], [1,2,3,4]) if j%2==0}
print(x)
print(type(x))
#    :
#{'   ': 2, '   ': 4}
#<class 'dict'>

#   
#                 
#  items()        
dict={'  1': 1, '   ': 2, '   ': 3, '   ': 4}
x = {i : j for i, j in dict.items() if j%2==0}
print(x)
print(type(x))
#    :
#{'   ': 2, '   ': 4}
#<class 'dict'>
모듈 유도 식:

#  1 1000000   
x=(i for i in range(1,10**6+1) if i%2==0)
print(x)
type(x)
#    :
#<generator object <genexpr> at 0x00000241FFAB2750>
#<class 'generator'>
어!앞에서 배열 이나 집합 또는 사전 을 되 돌려 줍 니 다.이것 은 어떻게 생 성기(genexpr)를 되 돌려 줍 니까?이것 은 원 그룹 이 변 할 수 없 기 때 문 입 니 다.안에 있 는 요 소 를 방문 해 보 겠 습 니 다!

#                 
x=(i for i in range(1,10**6+1) if i%2==0)
for i in x:
 print(i)
#    :
#2
#4
#.
#.
#.
#1000000
 결론:유도 식 은 많은 장점 이 있 지만 유일 하 게 부족 한 것 은 국부 변수의 가 독성 이 높 지 않다 는 것 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기