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

파이썬으로 주어진 조건에 맞는 리스트의 모든 조합 찾는 방법

리스트 안에서 주어진 조건(길이 K)에 맞는 모든 조합을 찾아야 할 때는 간단한 반복문과 append 메서드, 그리고 isinstance 메서드를 함께 활용하면 됩니다. 이 방법은 문자열과 리스트가 섞여 있는 중첩 구조의 데이터에서도 유용하게 사용됩니다.

예제 코드

다음은 실제 동작 과정을 보여주는 예제입니다.

my_list = ["python", [15, 12, 33, 14], "is", ["fun", "easy", "better", "cool"]]

print("The list is :")
print(my_list)

K = 4
print("The value of K is :")
print(K)

my_result = []
count = 0
while count <= K - 1:
   temp = []

   for index in my_list:

      if not isinstance(index, list):
         temp.append(index)
      else:
         temp.append(index[count])
   count += 1
   my_result.append(temp)

print("The result is :")
print(my_result)

실행 결과

The list is :
['python', [15, 12, 33, 14], 'is', ['fun', 'easy', 'better', 'cool']]
The value of K is :
4
The result is :
[['python', 15, 'is', 'fun'], ['python', 12, 'is', 'easy'], ['python', 33, 'is', 'better'], ['python', 14, 'is',
'cool']]

코드 설명

  • 문자열과 리스트가 섞여 있는 리스트를 정의한 뒤 콘솔에 출력합니다.

  • 만들고자 하는 조합의 길이를 결정하는 값 K를 정의하고 출력합니다.

  • 최종 결과를 저장할 빈 리스트를 생성합니다.

  • 반복 횟수를 관리하기 위해 변수 count를 선언하고 0으로 초기화합니다.

  • while 루프를 사용해 조건 범위만큼 반복하면서, isinstance 메서드로 각 요소가 리스트 타입인지 여부를 검사합니다.

  • 요소가 리스트가 아니면 그대로 임시 리스트에 추가하고, 리스트라면 현재 count 인덱스에 해당하는 값을 꺼내어 추가합니다.

  • 이렇게 완성된 각 조합은 결과 리스트에 누적되며, 최종적으로 콘솔에 출력됩니다.

핵심 포인트

이 접근 방식의 핵심은 isinstance(index, list)를 통해 데이터 타입을 판별한다는 점입니다. 덕분에 단일 값과 중첩 리스트가 공존하는 비정형 데이터에서도 원하는 위치의 요소만 골라 새로운 조합을 손쉽게 만들어낼 수 있습니다.