리스트 내포 (list comprehension) 은 짧은 코드로 원하는 리스트를 만들어주는 문법이다. 잘~ 사용하면 유용하긴 한데, 이해가 안되면 오히려 가독성이 떨어지는 문제가 있다. 팀원들의 이해도에 맞추어서 적절하게 사용하길 바란다.

 

첫번째 경우를 살펴보도록 하자.

# result = [10, 20, 30, 40, 50]

result = []
for i in range(1, 5+1):
    result.append(i*10)
print(result)


result = [i*10 for i range(1, 5+1)]
print(result)

이제, 조건을 넣어보자.

# result = [20, 40]


result = []
for i in range(1, 5+1):
    if i % 2 == 0:
        result.append(i*10)
print(result)


result = [i*10 for i range(1, 5+1) if i % 2 == 0]
print(result)

조건에 else 를 포함시켜보자. 이게 좀 헷갈리는 경우인데, 보통은 else 를 사용하는 경우는 없으니, 왠만하면 사용하지 않는 것으로 하자.

# result = [0, 20, 0, 40, 0]


result = []
for i in range(1, 5+1):
    if i % 2 == 0:
        result.append(i*10)
    else:
        result.append(0)
print(result)


# result = [i*10 for i range(1, 5+1) if i%2 == 0 else 0] # 에러 발생
result = [i*10 if i%2 == 0 else 0 for i range(1, 5+1)]
print(result)

이중 반복문도 해보자.

# result = [2, 4, 6, 3, 6, 9, 4, 8, 12]


result = []
for i in range(2, 4+1):
    for j range(1, 3+1):
        result.append(i*j)
print(result)


result = [i*j for i range(2, 4+1) for j range(1, 3+1)]
print(result)

 

리스트 내포에 대해서 알아보았는데, 잘 알면 도움이 되지만, 어설프게 알고 쓰면 오히려 독이 될 수도 있으니 주의하자.

+ Recent posts