Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 리스트에 같은 값 여러 번 추가하는 3가지 방법

프로그래밍을 하다 보면 동일한 숫자나 문자열을 리스트에 여러 번 넣어야 하는 경우가 종종 발생합니다. 예를 들어 초기값으로 채운 리스트를 만들거나, 특정 구분자를 반복하거나, 계산용 데이터를 미리 준비해야 할 때가 그렇습니다. Python은 이런 작업을 간편하게 처리할 수 있는 내장 기능과 표준 라이브러리 함수를 여러 가지 제공합니다.

이 글에서는 대표적인 세 가지 방법을 예제 코드와 함께 살펴보고, 각 방법의 특징과 차이점까지 정리해 드립니다.

1. 곱셈 연산자(*) 활용하기

가장 널리 쓰이는 방법입니다. 문자열이나 리스트에 * 연산자를 적용하면 해당 값이 지정한 횟수만큼 반복된 새로운 객체가 생성됩니다. 코드가 짧고 직관적이라 간단한 반복 작업에 특히 유용합니다.

예제

given_value = 'Hello! '
repeated_value = 5 * given_value
print(repeated_value)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Hello! Hello! Hello! Hello! Hello!

문자열뿐 아니라 리스트에도 동일하게 적용할 수 있습니다. 예를 들어 [0] * 5는 0이 다섯 개 들어 있는 리스트 [0, 0, 0, 0, 0]을 만들어 주므로, 초깃값 배열을 만들 때 자주 활용됩니다.

2. itertools.repeat() 함수 활용하기

itertools 모듈의 repeat() 함수는 반복할 값을 첫 번째 인자로, 반복 횟수를 두 번째 인자로 받아 반복 객체(iterator)를 반환합니다. 이 결과를 extend() 메서드로 리스트에 펼쳐 넣으면 원하는 형태의 리스트를 손쉽게 만들 수 있습니다.

예제

from itertools import repeat

given_value = 'Hello! '
new_list = []
new_list.extend(repeat(given_value, 5))
print(new_list)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

['Hello! ', 'Hello! ', 'Hello! ', 'Hello! ', 'Hello! ']

repeat()는 내부적으로 값을 복사하지 않고 동일한 객체에 대한 참조를 반복해서 반환합니다. 따라서 대량의 데이터를 반복할 때 메모리 면에서 효율적이며, 무한 반복이 필요한 경우 반복 횟수를 생략할 수도 있다는 장점이 있습니다.

3. extend()와 for 루프(리스트 컴프리헨션) 활용하기

extend() 메서드와 range(), 그리고 리스트 컴프리헨션을 조합하는 방법도 있습니다. 먼저 빈 리스트를 선언한 뒤, for 루프가 생성하는 요소들을 계속 덧붙이는 방식입니다. range()에 지정한 숫자가 곧 반복 횟수를 결정하므로, 반복 로직에 조건이나 변환을 추가하고 싶을 때 유연하게 확장할 수 있습니다.

예제

given_value = 'Hello! '
new_list = []
new_list.extend([given_value for i in range(5)])
print(new_list)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

['Hello! ', 'Hello! ', 'Hello! ', 'Hello! ', 'Hello! ']

리스트 컴프리헨션 안에서 인덱스 변수 i를 활용하면 단순 반복을 넘어 f'{i}번째 Hello!'처럼 값에 변화를 주는 것도 가능합니다.

어떤 방법을 선택해야 할까?

세 방법 모두 같은 결과를 만들지만 상황에 따라 적합성이 다릅니다.

  • 간단한 고정 반복: * 연산자가 가장 짧고 가독성이 좋습니다.
  • 메모리 효율이 중요한 대량 반복: itertools.repeat()가 참조 기반으로 동작해 유리합니다.
  • 반복 중 로직이나 조건이 필요한 경우: 리스트 컴프리헨션과 extend() 조합이 가장 유연합니다.

단, 리스트 곱셈(* )으로 가변 객체(예: [[]] * 5)를 만들면 모든 요소가同一个 객체를 참조하게 되어 한 요소를 수정하면 나머지에도 영향을 줄 수 있으니 주의해야 합니다. 이런 경우에는 리스트 컴프리헨션으로 매번 새 객체를 생성하는 것이 안전합니다.