프로그래밍을 하다 보면 True와 False 같은 부울(Boolean) 값만으로 구성된 리스트가 필요한 경우가 있습니다. 예를 들어 플래그(flag) 배열을 만들거나, 특정 조건의 초기 상태를 설정할 때 유용합니다. 이번 글에서는 Python으로 부울 값만 담긴 리스트를 생성하는 다양한 방법을 소개합니다.
1. range() 함수와 리스트 컴프리헨션 활용
range() 함수에 원하는 값의 개수를 지정하고, 리스트 컴프리헨션(list comprehension)과 for 반복문을 함께 사용하면 원하는 개수만큼 부울 값을 채운 리스트를 손쉽게 만들 수 있습니다.
예제 코드
res = [True for i in range(6)]
# 결과 출력
print("부울 요소로 구성된 리스트 : \n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
부울 요소로 구성된 리스트 : [True, True, True, True, True, True]
이 방식의 장점은 필요에 따라 i 값을 이용해 조건부 로직을 추가할 수 있다는 점입니다. 예를 들어 [True if i % 2 == 0 else False for i in range(6)]처럼 작성하면 True와 False가 교차하는 리스트도 만들 수 있습니다.
2. 곱셈 연산자(*) 활용
Python의 * 연산자는 동일한 값을 원하는 횟수만큼 반복할 수 있습니다. 이를 활용하면 한 줄의 코드로 간단하게 부울 리스트를 생성할 수 있으며, 가독성과 실행 속도 면에서도 매우 효율적입니다.
예제 코드
res = [False] * 6
# 결과 출력
print("부울 요소로 구성된 리스트 : \n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
부울 요소로 구성된 리스트 : [False, False, False, False, False, False]
다만 불변(immutable) 객체인 부울 값은 문제가 없지만, 리스트 안에 가변(mutable) 객체가 들어갈 경우 동일한 객체 참조가 복사되므로 주의해야 합니다.
3. bytearray() 함수 활용
bytearray() 함수를 사용하면 기본값이 0인 바이트 시퀀스를 생성할 수 있습니다. Python에서는 0이 False로 평가되기 때문에, 부울 대신 정수 형태의 이진값 리스트가 필요할 때 유용하게 활용됩니다.
예제 코드
res = list(bytearray(5))
# 결과 출력
print("이진 요소로 구성된 리스트 : \n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 나타납니다.
이진 요소로 구성된 리스트 : [0, 0, 0, 0, 0]
출력 결과가 True/False가 아닌 0으로 표시되지만, 논리 연산에서는 0이 False와 동일하게 동작하므로 상황에 따라 충분히 대체 가능합니다.
마무리
정리하면, 리스트 컴프리헨션은 유연성이 뛰어나고 조건 로직 추가가 가능하며, 곱셈 연산자(*)는 가장 간결하고 빠른 방법입니다. 또한 bytearray()는 메모리 효율이 중요한 대규모 데이터 처리에 적합합니다. 용도와 성능 요구 사항에 맞는 방법을 선택해 사용하시기 바랍니다.