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

Python – 리스트에 요소를 K번 무작위로 삽입하는 방법

리스트에 요소를 지정한 횟수(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()는 주어진 리스트에서 하나의 요소를 무작위로 선택해 반환하므로, 매번 다른 값이 삽입될 수 있습니다.