-
파이썬_Unit23_2차원_3차원_list만들기python파2썬 2021. 8. 26. 18:09
코딩도장_Unit23_2차원_3차원_list만들기
파이썬
#2차원 리스트 만들기.
#2차원 리스트 만들기 a = [[10, 20],[30, 40],[50, 60]] print(a) #2차원 리스트 요소에 접근하기 print(a[0][0]) #세로인덱스0, 가로인덱스0 요소 출력 a[0][1]=1000 #세로인덱스0 가로인덱스1 요소에 값 할당. print(a) x = ((10, 20), (30, 40), (50, 60)) # 튜플 안에 튜플을 넣은 2차원 튜플 y = ([10, 20], [30, 40], [50, 60]) # 튜플 안에 리스트를 넣음 z = [(10, 20), (30, 40), (50, 60)] # 리스트 안에 튜플을 넣음 print(x) print(y) print(z) #반복문으로 2차원 요소 출력하기. b = [[10,20], [30,40], [50,60]] for b1, b2 in b: #리스트의 가로 한 줄(안쪽 리스트)에서 요소 두개를 꺼냄 print(b1,b2) print() #반복문 두번 사용해서 2차원 리스트 요소 출력 for i in b: # b안쪽 리스트를 꺼냅니다. for j in i: #안쪽 리스트에서 요소를 하나씩 꺼냅니다. print(j) print() for k in range(len(b)): #세로크기 for r in range(len(b[k])): #가로크기 print(b[k][r]) #while을 통해서 한번에 사용하기 q = 0 while q < len(b): #반복할 리스트 크기 활용 n,m = b[q] #요소 두개 한꺼번에 가져오기 print(n,m) q+=1 #인덱스 1증가. #while문 두번 사용하기 q1 = 0 while q1< len(b): #세로 크기 q2 = 0 while q2 < len(b[q1]): #가로 크기 print(b[q1][q2]) q2 += 1 #가로 인덱스 1증가 print() q1 += 1 #세로 인덱스 1증가
#반복문으로 리스트 생성 및 정렬
# for 반복문 1차원 리스트 만들기 a = [] #빈리스트 생성 for i in range(10): #0~9까지 인덱스에 0추가 a.append(0) #append 요소 추가 print(a) #반복문으로 2차원 리스트 만들기 b = [] #빈리스트 생성 for n in range(3): #안쪽에 생성할 리스트 크기설정 line = [] for m in range(2): #안쪽리스트 요소 갯수 line.append(0) #안쪽에 0 추가 b.append(line) #전체 리스트에 안쪽 리스트 추가 print(b) #2차원 톱니 만들기 x = [3,1,3,2,5] y = [] for i in x: line = [] for j in range(i): #리스트 저장된 가로 크기만큼 반복 line.append(0) y.append(line) print(y) #위의 코드를 간단하게 표현하기. c = [[0]*i for i in [3,1,3,2,5]] print(c) #sorted로 2차원 리스트 정렬하기. #문법 : sorted(반복가능한객체, key=정렬함수, reverse=True 또는 False) students = [ ['john', 'C', 19], ['maria', 'A', 25], ['andrew', 'B', 7] ] print(sorted(students, key=lambda student: student[1])) #안쪽 리스트 인덱스 1을 기준으로 정렬 -> 가운데 'A' 'B' 'C' print(sorted(students , key=lambda student: student[2])) #안쪽 리스트 인덱스 2를 기준으로 정렬 -> 마지막 숫자 순서대로
#리스트 복사, 할당 / deepcopy 와 copy 차이알기#리스트 할당과 복사 a = [[10,20],[30,40],[50,60]] b = a b[0][0] = 500 #리스트 할당은 변수에 할당하고 변경해보면 모두 반영됩니다. print(a) print(b) print() #2차원 리스트는 copy메서드로 복사해도 모두 반영됩니다. #하지만 copy.deepcopy 함수를 사용하여 깊은 복사를 하면 하나의 리스트에만 적용됩니다. x = [[10,20],[30,40],[50,60]] import copy y = copy.deepcopy(x) #deepcopy는 좀 신기하네요. y[0][0] = 500 print(x) print(y) #연습문제 23.6 z = [[[0 for i in range(3)] for j in range(4)] for k in range(2)] print(z) #(가로 *세로) * 높이 #리스트 = [[[값, 값], [값, 값]], [[값, 값], [값, 값]], [[값, 값], [값, 값]]] #리스트[높이인덱스][세로인덱스][가로인덱스] #리스트[높이인덱스][세로인덱스][가로인덱스] = 값
심사문제23.7
#심사문제 23.7 row, col = map(int, input().split()) matrix = [] for i in range(row): matrix.append(list(input())) for i in range(row): for j in range(col): if matrix[i][j] == '*': continue else: matrix[i][j] = 0 for y in range(i-1, i+2): #한 칸 위부터 한 칸 아래까지 반복 for x in range(j-1, j+2): #한 칸 앞(왼)부터 한 칸 뒤(오른)까지 반복 if y<0 or x<0 or y>=row or x >=col: continue elif matrix[y][x] == '*': matrix[i][j] += 1 for i in range(row): for j in range(col): print(matrix[i][j], end='') print()
결과
5 5 -> 입력
..*..
...*.
.*...
.***.
*.*..01*21 -> 출력결과
2*532
3***1
*4*31'python파2썬' 카테고리의 다른 글
파이썬_Unit25_딕셔너리 응용 (0) 2021.09.02 파이썬_문자열 응용하기_Unit24_포메팅 (0) 2021.08.27 파이썬_list(6)_Unit22_심사문제22.10_map을 사용해서 입력시 list생성(tuple) (0) 2021.08.24 파이썬_list(5)_리스트 안에서 반복문 조건문 (0) 2021.08.24 파이썬_list(4)_while_Unit22 (0) 2021.08.24