리스트에 요소를 지정한 횟수(K번)만큼 무작위로 삽입해야 하는 경우, 파이썬의 random 패키지에서 제공하는 다양한 메서드와 간단한 반복문을 활용하면 손쉽게 구현할 수 있습니다.
이 글에서는 정렬된 숫자 리스트 안에 문자열 요소를 무작위 위치에 삽입하는 방법을 예제와 함께 살펴보겠습니다.
예제 코드
아래는 실제 동작 과정을 보여주는 예제입니다.
import random
my_list = [34, 12, 21, 56, 8, 9, 0, 3, 41, 11, 90]
print("The list is : " )
print(my_list)
print("The list after sorting is : " )
my_list.sort()
print(my_list)
to_add_list = ["Python", "Object", "oriented", "language", 'cool']
K = 3
print("The value of K is ")
print(K)
for element in range(K):
index = random.randint(0, len(my_list))
my_list = my_list[:index] + [random.choice(to_add_list)] + my_list[index:]
print("The resultant list is : ")
print(my_list)실행 결과
The list is : [34, 12, 21, 56, 8, 9, 0, 3, 41, 11, 90] The list after sorting is : [0, 3, 8, 9, 11, 12, 21, 34, 41, 56, 90] The value of K is 3 The resultant list is : [0, 3, 8, 9, 11, 12, 'Python', 21, 34, 41, 56, 90, 'Object', 'oriented']
코드 설명
먼저 필요한 패키지(
random)를 환경에 임포트합니다.정수로 이루어진 리스트를 정의하고 콘솔에 출력합니다.
sort()메서드를 사용해 리스트를 오름차순으로 정렬한 뒤, 다시 한번 화면에 출력합니다.삽입할 문자열들이 담긴 별도의 리스트를 준비하고, 삽입 횟수를 의미하는 K 값을 정의하여 출력합니다.
K번만큼 반복문을 실행하면서,
random패키지의randint()메서드로 0부터 리스트 길이 사이의 무작위 인덱스를 생성합니다.리스트 슬라이싱과
random.choice()메서드를 활용해 해당 인덱스 위치에 새로운 요소를 삽입합니다. 이때 연결 연산자(+)를 사용해 기존 리스트 앞부분, 삽입할 요소, 뒷부분을 하나로 합칩니다.모든 삽입이 완료된 최종 리스트를 콘솔에 출력합니다.
핵심 포인트
random.randint(0, len(my_list))는 시작값과 끝값을 모두 포함하는 범위에서 난수를 생성하기 때문에, 리스트의 맨 앞부터 맨 끝까지 모든 위치에 요소가 삽입될 수 있습니다. 또한 random.choice()는 주어진 리스트에서 하나의 요소를 무작위로 선택해 반환하므로, 매번 다른 값이 삽입될 수 있습니다.