본문 바로가기

Python

[파이썬의 시작] 리스트 #5 - 리스트 안에 리스트 출력


◐ 파이썬의 시작 - 리스트


#5 리스트 안에 리스트 출력

if 문과 isinstance() 내장 함수를 사용해서 하위 리스트를 출력할 것 입니다.
먼저 isinstance() 사용법을 설명하겠습니다.
isinstance() 내장 함수는 식별자가 특정 형의 데이터를 갖고 있는지 확인하는 함수입니다.

names가 list 형인지 물어봅니다. True가 출력된 것을 보니 names가 리스트 인것을 확인할 수 있습니다.
하지만 num_names는 len() 결과 2의 값을 가지고 있으므로 리스트가 아니라 False가 출력되네요.

>>> names=["Michael", "Terry"]
>>> isinstance(names, list)
True
>>> num_names=len(names)
>>> isinstance(num_names, list)
False

이제 if 문에 적용해보겠습니다.

적용 결과 리스트 안의 리스트도 출력 됩니다.
if, for, isinstance()를 사용해 리스트 형의 데이터를 가질 경우 나열해주는 형식입니다.
리스트 안에 리스트 형식의 데이터들이 모두 나열되었습니다.

>>> movie=["The Holy Grail", 1975, "Terry Jones & Gilliam", 91, ["Graham Chanpman",["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]
>>> for each_item in movie:
            if isinstance(each_item, list):
                       for nested_item in each_item:
                                  if isinstance(nested_item, list):
                                                for deeper_item in nested_item:
                                                            print(deeper_item)
                                  else:
                                                print(nested_item)
            else:
                        print(each_item)

  
The Holy Grail
1975
Terry Jones & Gilliam
91
Graham Chanpman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones


하지만 데이터안에 리스트들이 무수히 많을 경우 if 문을 계속 추가해 주어야하는 번거로움이 있습니다.
이 경우 코드를 반복하지 말고 함수를 이용하세요.
이용하세요.


파이썬 함수는 def 문으로 정의하며, 그 뒤에 함수 이름과 인자가 있을 때에는 괄호 안에 인자를 채워 넣거나 빈 괄호를 씁니다.


인자로 받은 리스트를 for 루프로 처리합니다. 만약 리스트 안의 항목이 리스트면 함수를 호출하고 리스트 안의 항목이 리스트가 아니면 화면에 출력하도록 함수를 완성합니다.
함수 호출 결과 모든 항목들이 나열된 것을 확인할 수 있습니다. 앞에서 만든 코드의 결과와 같습니다.

>>> def print_lol(the_list):
             for each_item in the_list:
                          if isinstance(each_item,list):
                                    print_lol(each_item)
                          else:
                                    print(each_item)

>>>
>>> print_lol(movie)
The Holy Grail
1975
Terry Jones & Gilliam
91
Graham Chanpman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones