요즘들어 파이썬을 많이 사용하는데, 기초적인 튜토리얼 업싱 하려다 보니 아무래도 자주 막히는 면이 있다. 특히나 파이썬은 제공하는 기능이 너무나 많다. ㅠㅠ 이러쿵 저러쿵 해서 해결하면 사실 이미 제공하는 함수가 있는 경우가 다반사이다.
자주 잊어버리는 2차원 배열 생성을 정리한다. 우선, 나는 이렇게 실수하는 경우가 잦은데,
1 2 3 4 5 6 7 8 9 10 11 12 | arr = [] list = [] count = 0 for i in range(3): for j in range(2): count += 1 list.append(count) arr.append(list) list.clear() for i in range(len(arr)): print(arr[i]) | cs |
이렇게 하면 결과는 아무것도 안나온다...
list의 생성을 for문 밖에대 해 준 상태여서, list를 clear하면서 append 했던 값들도 모두 사라져 버리는 것이다. 그래서 아래와 같이 list의 생성을 첫 번째 for문 안에다 해 주어야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 | arr = [] count = 0 for i in range(3): list = [] for j in range(2): count += 1 list.append(count) arr.append(list) for i in range(len(arr)): print(arr[i]) | cs |
아무 생각 없이 list를 clear해 버리면 arr안의 값들도 전부 사라져 버린다. 아마 append는 포인터 형식으로 하나보다.
그냥 전부 0짜리나, 전부 같은 값을 갖는 2차원 배열을 생성하고 싶다면 한 줄로 간단하게 할 수 있다.
1 2 3 4 | matrix = [[0 for col in range(2)] for row in range(3)] for i in range(len(matrix)): print(matrix[i]) | cs |
간단간단!!
'개발' 카테고리의 다른 글
C 언어 도서 관리 프로젝트 (0) | 2019.01.05 |
---|---|
C 언어 - 두고두고 쓰기 위한 문자열 search 함수 (0) | 2019.01.04 |
C 언어 - 파일 입출력 (0) | 2018.12.31 |
C 언어 if-elseif-else문을 한 줄로! (0) | 2018.12.30 |
C 언어 - linked list를 노드로 구현해 봤다. (0) | 2018.12.28 |