리스트 안에서 주어진 조건(길이 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)를 통해 데이터 타입을 판별한다는 점입니다. 덕분에 단일 값과 중첩 리스트가 공존하는 비정형 데이터에서도 원하는 위치의 요소만 골라 새로운 조합을 손쉽게 만들어낼 수 있습니다.