python 2차원리스트

yo·2020년 5월 6일
0
post-thumbnail

2차원리스트 만들고 요소 접근하기

반복문으로 2차원 리스트 요소 출력하기

while반복문으로 2차원 리스트 출력

a = [[10, 20], [30, 40], [50, 60]]
i = 0
while i < len(a):
	x, y = a[i]
	print(x, y)
	i += 1

	
10 20
30 40
50 60

-while 반복문 사용때도 리스트 크기 활용하면 편하다.

a = [[10, 20], [30, 40], [50, 60]]i = 0while i < len(a):
	j = 0
	while j < len(a[i]):
		print(a[i][j], end=' ')
		j += 1   #가로 인덱스를 1 증가시킴
	print()
	i += 1      #세로 인덱스를 1 증가시킴

	
10 20 
30 40 
50 60 

반복문으로 리스트 만들기

for반복문으로 1차원 리스트 만들기

a = []
for i in range(10):
	a.append(0)

	
print(a)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

for문으로 2차원 리스트 만들기

예시1)

a = []
for i in range(3):
	line = []
	for j in range(2):
		line.append(0)
	a.append(line)

	
print(a)
[[0, 0], [0, 0], [0, 0]]

예시2)

a = [[0 for j in range(2)] for i in range(3)]
print(a)
[[0, 0], [0, 0], [0, 0]]

-만약 for 반복문 1번만 하용하려면 아래처럼 리스트 자체를 곱해주면 됨.

a = [[0] * 2 for i in range(3)]
print(a)
[[0, 0], [0, 0], [0, 0]]

톱니형 리스트 만들기

a = [3,1,3,2,5]
b= []

for i in a:
	line = []
	for j in range(i):
		line.append(0)
	b.append(line)

	
print(b)
[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]

위 예문을 리스트 표현식을 활용해 간단히 만들 수 있다.

 a = [[0] * i for i in [3,1,3,2,5]]
print(a)
[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]

2차원 리스트의 할당과 복사

-2차원 리스트 만든 뒤 다른 변수에 할당하고, 요소를 변경하면 두 리스트에 모두 반영됨.
예시

a = [[10,20],[30,40],[50,60]]
b = a
b[0][0] = 500
print(a)
[[500, 20], [30, 40], [50, 60]]
print(b)
[[500, 20], [30, 40], [50, 60]]

-리스트 a를 b에 copy한 뒤 b의 요소를 변경하면 리스트 a,b 모두 반영됨.
예시

a = [[10,20],[30,40]]
b = a.copy()
b[0][0] = 500
print(a)
[[500, 20], [30, 40]]
print(b)
[[500, 20], [30, 40]]

-2차원 이상의 다차원 리스트는 리스트를 완전히 복사하려면 copy 메서드 대신 copy 모듈의 deepcopy 함수를 사용해야 한다.
예시

a = [[10,20],[30,40]]
import copy
b = copy.deepcopy(a)
b[0][0] = 500
print(a)
[[10, 20], [30, 40]]
print(b)
[[500, 20], [30, 40]]
profile
Never stop asking why

0개의 댓글