Python/Python

[Python] 02. 리스트(list)와 2차원리스트(list)

구름솜:D 2023. 11. 23. 18:06
728x90

파이썬의 내장된 라이브러리에서는 크기를 정하여 생성하는 배열의 개념이 없어 리스트가 이를 대체한다.

파이썬에서 배열을 사용하기 위해서는  array module또는 Numby package등 외부 라이브러리를 사용해야한다.

이에 코딩테스트 문제풀이 시 1차원리스트를 1차원 배열, 2차원리스트를 2차원 배열이라고 사용하기도 한다. 

하지만 명확하게 구분하면 둘은 다르다.

 

* 크기가 n인 1차원 리스트 만들기

1) 임의의 값으로 초기화 해서 리스트 만들기

n = int(input())
list1 = [0] * n

 

2) list()함수 사용하기

n = int(input())
list1 = list(map(int,input().split()))[0:n]

3) 반복문(for문) 사용하기

n = int(input())
list1 = []
for i in range(n):
    list1.append(int(input()))
print(list1)

 

 

* 크기가 정해지지 않은 1차원 리스트 만들기

1) list()함수 사용하기

# 입력받는 자료형이 문자열일 때
list1 = list(input().split())   
#입력받는 자료형이 숫자일 때 
list2 = list(map(int,input().split())

 

2) 반복문(for문) 사용하기

#리스트안의 요소를 문자열로 넣을 때
list1 = [ i for i in input().split()]   
#리스트안의 요소를 숫자로 넣을 때
list2 = [ int(i) for i in input().split()]

 

 

 

* 크기가 n * m 인 2차원리스트 만들기  (n =세로(열), m = 가로(행))

- 파이썬에서 2차원 리스트는 리스트 안에 리스트가 들어있는 형태이다.

1) 임의의 값으로 초기화 해서 리스트 만들기

n ,m = map(int,input().split())
arr1 = [[0]*m for col in range(n)]
arr2 = [[0 for col in range(m)] for row in range(n)]

 

* 불가 *

rows = int(input())
cols = int(input())
arr = [[0] * cols] * rows

- python에서 * 연산자를 이용해 배열을 선언하게 되면, 얕은복사(shallow copy)가 진행된다.

- 배열은 제대로 선언된 것 처럼 보이지만 하나의 요소의 값을 변경하려하면 다른 요소의 값도 같이 변경된다.

- 즉, 배열 내의 요소들이 같은 객체를 가리켜 해당 방식으로 2차원리스트를 선언하면 다른 요소의 값도 같이 변경된다.

 

2) list()함수 사용하기

n ,m = map(int,input().split())
arr = []
for i in range(n):
    arr.append(list(map(int,input().split()))[0:m])
print(arr)

3) 반복문(for문) 사용하기

n ,m = map(int,input().split())
arr = []
for i in range(n):
    row = []
    for j in range(m):
        row.append(int(input()))
    arr.append(row)

 

 

* 크기가 정해지지 않은 2차원 리스트 만들기

- 행 반복을 위한 범위는 정해줘야한다

n = int(input())
arr = []
for i in range(n):
    arr.append(list(map(int,input().split())))
print(arr)
n = int(input())
arr1 = [list(map(int,input())) for _ in range(n)]
arr2 = [list(map(int,input().split())) for _ in range(n)]