# 미리 만들어둔 테스트용 리스트
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]]
# comprehension syntax를 사용하며 list 뿐만이 아니라 generator, dictionary, set등도 만들 수 있다.
1. 리스트
In [14]: [ row[2] for row in m]
Out[14]: [3, 6, 9]
2. 제너레이터
In [7]: g=(sum(row) for row in m)
In [8]: g
Out[8]: <generator object <genexpr> at 0x00000278D2D7A480>
In [9]: next(g)
Out[9]: 6
In [10]: next(g)
Out[10]: 15
In [11]: next(g)
Out[11]: 24
In [12]: next(g)
Traceback (most recent call last):
File "<ipython-input-12-e734f8aca5ac>", line 1, in <module>
next(g)
StopIteration
#제너레이터는 처음부터 한번씩 원소를 반환하며 끝에 도달하면 에러를 발생시킨다.
3. set
#세트는 괄호만 바꿔주면 된다
In [16]: g={sum(row) for row in m}
In [17]: g
Out[17]: {6, 15, 24}
4. dictionary
#딕셔너리 역시 괄호를 바꿔주고 키와 값을 지정해주고 그 사이를 콜론으로 마무리해주면 된다.
In [25]: g={m.index(row):sum(row) for row in m}
In [26]: g
Out[26]: {0: 6, 1: 15, 2: 24}
# 괄호를 사용하면 제너레이터를 생산하게 되므로 튜플은 만들 수가 없는 것 같다.
'Python > list' 카테고리의 다른 글
count, index, insert, remove, pop, extend (0) | 2019.12.27 |
---|---|
list comprehension 예 (0) | 2019.12.27 |
nested list (0) | 2019.12.27 |