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

주어진 조건에 따라 두 리스트를 교차 병합하고 정렬하는 Python 프로그램


파이썬에서 특정 조건에 따라 두 개의 리스트에 담긴 요소들을 조합하거나 병합해야 할 때가 있습니다. 이럴 때 간단한 반복문과 제너레이터(yield) 키워드, 그리고 인덱싱을 함께 활용하면 원하는 결과를 손쉽게 얻을 수 있습니다.

예제

다음은 이를 구현한 예제입니다 −

print("메서드 정의 시작")
def merge_the_vals(my_list_1, my_list_2, K):
   index_1 = 0
   index_2 = 0
   while(index_1 < len(my_list_1)):
      for i in range(K):
         yield my_list_1[index_1]
         index_1 += 1
      for i in range(K):
         yield my_list_2[index_2]
         index_2 += 1
print("메서드 정의 끝")

my_list_1 = [12, 56, 14, 28, 61, 73, 59, 90]
my_list_2 = [52, 16, 17, 34, 43, 16, 84, 57]

print("첫 번째 리스트 : ")
print(my_list_1)

print("두 번째 리스트 : ")
print(my_list_2)

K = 2
print("K의 값 : ")
print(K)

my_result = [element for element in merge_the_vals(my_list_1, my_list_2, K)]

print("결과 리스트 : ")
print(my_result)

print("정렬 후 리스트 : ")
my_result.sort()
print(my_result)

출력

메서드 정의 시작
메서드 정의 끝
첫 번째 리스트 :
[12, 56, 14, 28, 61, 73, 59, 90]
두 번째 리스트 :
[52, 16, 17, 34, 43, 16, 84, 57]
K의 값 :
2
결과 리스트 :
[12, 56, 52, 16, 14, 28, 17, 34, 61, 73, 43, 16, 59, 90, 84, 57]
정렬 후 리스트 :
[12, 14, 16, 16, 17, 28, 34, 43, 52, 56, 57, 59, 61, 73, 84, 90]

설명

  • 두 개의 리스트와 값 K를 매개변수로 받는 제너레이터 함수 merge_the_vals를 정의합니다.

  • 인덱스가 리스트의 길이보다 작은 동안, 첫 번째 리스트에서 K개, 이어서 두 번째 리스트에서 K개의 요소를 yield 연산자로 순차적으로 반환합니다.

  • 함수 외부에서 정수형 요소를 가진 두 개의 리스트를 정의하고 콘솔에 출력합니다.

  • K 값을 지정하고 화면에 표시합니다.

  • 리스트 컴프리헨션을 사용해 필요한 매개변수를 전달하며 함수를 호출하고, 생성되는 요소들을 새 리스트에 담습니다.

  • 그 결과를 변수 my_result에 저장한 뒤 콘솔에 출력합니다.

  • 마지막으로 sort() 메서드를 사용해 결과를 오름차순으로 정렬한 후 콘솔에 다시 출력합니다.

핵심 포인트

이 예제의 핵심은 제너레이터 함수입니다. yield를 사용하면 모든 결과를 한꺼번에 메모리에 올리지 않고 요소를 하나씩 생성할 수 있어, 대용량 데이터를 다룰 때도 효율적입니다. 또한 K 값만 바꾸면 두 리스트를 섞는 방식을 유연하게 조절할 수 있으며, 마지막에 sort()를 적용하면 원하는 순서대로 데이터를 깔끔하게 정렬할 수 있습니다.