List를 평탄화하는 방법에는 flatten함수를 사용하는 방법이 있다~

근데 그냥 함수를 쓰는 것보다 재귀함수를 사용하여 직접 구현해보는 것도 재밌는 것 같다~!

성능이 어떻게 나오는지는 확인해보지 않았으나,

재귀함수 특성상 메모리 사용도 많고 느린 경우도 많으니..

실사용할 때는 그냥 flatten() 쓰는게 좋을 것 같다..^^

example = [[1,2,3],[4,[5,6]],7,[8,9]]

def flatten_recursion(list):
    flatten_list = []

    for i in list:
        if isinstance(i, __builtins__.list):
            flatten_list.extend(flatten_recursion(i))
        else:
            flatten_list.extend([i])

    return flatten_list

print(flatten_recursion(example))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

반응형

 

''.join(iterable) 함수는 리스트를 문자열로 합춰주는 기능을 한다.

문자열을 리스트로 쪼개주는 .split() 함수와 정반대의 기능을 한다고 보면 된다.

iterable에는 List, Tuple, Dictionary, Set 등이 들어갈 수 있다.

시간복잡도가 O(n) 밖에 되지 않아 일반적으로 for문을 사용하여 문자열을 합치는 것보다 성능면에서 우월하다.

 

"".join(iterable) 함수 예제

 

"".join(iterable) 실행 결과

 

 

반응형

List list = new ArrayList(); 와 ArrayList list = new ArrayList(); 의 차이는 무엇인가.

클래스를 생성할 때 도형 타입으로 생성하게 되면 정사각형이 아닌 다른 직사각형, 삼각형 등 도형 인터페이스를 구현한

클래스에서 사용 될 수 있다. 하지만 정사각형 클래스로 생성하게 되면 직사각형, 삼각형 등 에서는 사용할 수 없다.

 

도형에 비유하여 풀어보면,

 

List는 인터페이스이므로

List list = new ArrayList();

-> 도형 list = new 정사각형();

 

ArrayList는 클래스이므로

ArrayList list = new ArrayList();

-> 정사각형 list = new 정사각형();

반응형

+ Recent posts