#
In [1]: import timeit as ti
 
In [8]: a="""\
   ...: a1=[x**3 for x in [1,2,3,4,5,6,7,8,9,10]]
   ...: a1"""

In [9]: b="""\
   ...: b1=[]
   ...: for x in [1,2,3,4,5,6,7,8,9,10]:
   ...: b1.append(x**3)
   ...: b1"""

In [10]: ti.timeit(a, number=100000)
Out[10]: 0.4964596600000277

In [11]: ti.timeit(b, number=100000)
Out[11]: 0.5405233050000788 
 
결론
즉 큰 차이는 아니지만  동일한 결과를 내는 식이라면 for loop를 사용하는 것보다는 list comprehension을 사용하는 것이 대게 더 빠르다.
 
간단한 벤치마크는 timeit.timeit 함수를 사용하면 된다.
timeit(a, number=b) 에서 a는 벤치마크를 하려는 문자열이고, b는 이것을 몇번 반복하는지 지정하는 것이다.
 

'Python' 카테고리의 다른 글

( ) = ( ) if ( ) else ( ) 구문  (0) 2019.12.27
변수명  (0) 2019.12.27
python statements  (0) 2019.12.27
binary data pack unpack examples  (0) 2019.12.27
struct : binary data packing & unpacking options  (0) 2019.12.27

PYTHON/Types
#
딕셔너리에서는 인덱스가 아닌 키값으로 값을 참조한다.
In [18]: d
Out[18]: {'a': 1, 'b': 2, 'c': 3, 'f': 50}
 
In [20]: d[1]='e'

In [21]: d
Out[21]: {'a': 1, 'b': 2, 'c': 3, 'f': 50, 1: 'e'}

In [22]: del d[1]

In [23]: d
Out[23]: {'a': 1, 'b': 2, 'c': 3, 'f': 50}
 
즉 del d[1]에서 1은 인덱스 1이 아니라 키값 1을 말한다. 
 
In [23]: d
Out[23]: {'a': 1, 'b': 2, 'c': 3, 'f': 50}

In [24]: d.keys()
Out[24]: dict_keys(['a', 'b', 'c', 'f'])

In [25]: d.items()
Out[25]: dict_items([('a', 1), ('b', 2), ('c', 3), ('f', 50)])

In [26]: d.get('a')
Out[26]: 1

In [27]: d.get('x',8) # 두번째 인자는 'x'라는 키값이 존재하지 않을 때 반환하는 디폴트값을 지정한다
Out[27]: 8

In [1]: m=[[1,2,3],[4,5,6],[7,8,9]]

In [2]: m
Out[2]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

In [28]: a=map(sum,m)
#리스트 m의 원소들을 차례대로 입력 받아 함수에 넣고 값을 map object로 반환한다.

In [29]: a
Out[29]: <map at 0x278d2de6860>
 
 
In [31]: next(a)
Out[31]: 6
 
In [33]: next(a)
Out[33]: 15

In [34]: next(a)
Out[34]: 24 
 
 
In [36]: a=list(map(sum,m))

In [37]: a
Out[37]: [6, 15, 24]

In [38]: a=set(map(sum,m))

In [39]: a
Out[39]: {6, 15, 24}

In [40]: a=tuple(map(sum,m))

In [41]: a
Out[41]: (6, 15, 24) 

'Python > function' 카테고리의 다른 글

yield, return  (0) 2019.12.27

+ Recent posts