언어 공부 기록/python
[python] list comprehension - 2
jaeha lee
2020. 9. 12. 01:33
다음과 같은 리스트를 만들고 싶다면 어떻게 해야할까?
l = [
[0],
[0,1],
[0,1,2],
[0,1,2,3],
[0,1,2,3,4]
]
이전에 쓴 list comprehension 글에서 사용한 방법을 각 아이템마다 적용해보면 다음과 같다.
l = [
[i for i in range(1)],
[i for i in range(2)],
[i for i in range(3)],
[i for i in range(4)],
[i for i in range(5)]
]
그런데, 여기에도 규칙이 있지 않은가? range 안에 있는 숫자가 [1,2,3,4,5] 안에 있는 숫자로, 너무나도 range로 표현하면 좋겠다는 생각이 든다. 저걸 j for j in range(1,6)으로 표현한다고 하고, 저 리스트 자체도 list comprehension으로 표현한다면 이렇게 되겠다.
l = [[i for i in range(j)] for j in range(1,6)]
각 아이템이 [i for i in range(j)]꼴이고, j가 1, 2, ..., 5로 바뀌니, list comprehension을 두 번 먹여서 이렇게 짧게 표현이 가능해진다. 사실상 아래의 2중 for문을 줄여놓은 것이라고 볼 수 있다.
l = []
for j in range(1, 6):
tmp = []
for i in range(j):
tmp.append(i)
l.append(tmp)
list comprehension에 익숙하면 이렇게 for문을 써놓은 것보다 훨씬 직관적으로 l 안에 무엇이 들어있는지 이해할 수 있다.
반응형