>>> a = [i for i in range(10)] # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10)) # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
리스트 표현식의 동작 순서
>>> c = [i + 5 for i in range(10)] # 0부터 9까지 숫자를 생성하면서 값에 5를 더하여 리스트 생성
>>> c
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> d = [i * 2 for i in range(10)] # 0부터 9까지 숫자를 생성하면서 값에 2를 곱하여 리스트 생성
>>> d
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
리스트 표현식에서 if 조건문 사용하기
[식 for 변수 in 리스트 if 조건식]
list(식 for 변수 in 리스트 if 조건식)
>>> a = [i for i in range(10) if i % 2 == 0] # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]
리스트 표현식에서 if 조건문 사용하기
>>> b = [i + 5 for i in range(10) if i % 2 == 1] # 0~9 숫자 중 홀수에 5를 더하여 리스트 생성
>>> b
[6, 8, 10, 12, 14]
for 반복문과 if 조건문을 여러 번 사용하기
[식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식n]
list(식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식n)
여기서는 코드를 한 줄로 입력했지만 다음과 같이 여러 줄로 입력해도 됩니다. 이때 들여쓰기는 해도 되고 하지 않아도 됩니다. 하지만 가독성을 위해 들여쓰기를 해주는 것이 좋습니다.
a = [i * j for j in range(2, 10)
for i in range(1, 10)]
리스트 표현식에 for가 여러 개일 때 처리 순서
start, last = map(int, input().split())
L = [2**i for i in range(start,last+1) if i != start+1 and i != last-1]
print(L)
2차원 리스트의 요소에 접근하기
리스트[세로인덱스][가로인덱스]
리스트[세로인덱스][가로인덱스] = 값
>>> a = [[10, 20], [30, 40], [50, 60]]
>>> a[0] [0] # 세로 인덱스 0, 가로 인덱스 0인 요소 출력
10
>>> a[1][1] # 세로 인덱스 1, 가로 인덱스 1인 요소 출력
40
>>> a[2][1] # 세로 인덱스 2, 가로 인덱스 0인 요소 출력
60
>>> a[0][1] = 1000 # 세로 인덱스 0, 가로 인덱스 1인 요소에 값 할당
>>> a[0][1]
1000
만약 2차원 리스트의 사각형 구조를 유지하도록 출력하려면pprint모듈의pprint함수를 사용합니다.
student[1]은 안쪽 리스트의 인덱스 1을 뜻하며'A','B','C'순으로 정렬합니다. 마찬가지로student[2]는 안쪽 리스트의 인덱스 2를 뜻하며 7, 19, 25 순으로 정렬합니다.
[ 연습문제 ] - 3차원 list 생성
a = [[[0 for col in range(3)] for row in range(4)] for depth in range(2)]
print(a)
[ 심화문제 ]
"""
표준 입력으로 2차원 리스트의 가로(col)와 세로(row)가 입력되고
그 다음 줄부터 리스트의 요소로 들어갈 문자가 입력됩니다. 이때 2차원 리스트 안에서 *는 지뢰이고 .은 지뢰가 아닙니다.
지뢰가 아닌 요소에는 인접한 지뢰의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).
여러 줄을 입력 받으려면 다음과 같이 for 반복문에서 input을 호출한 뒤 append로 각 줄을 추가하면 됩니다
(list 안에 문자열을 넣으면 문자열이 문자 리스트로 변환됩니다).
matrix = []
for i in range(row):
matrix.append(list(input()))
입력
3 3
.**
*..
.*.
결과
2**
*43
2*1
입력
5 5
..*..
...*.
.*...
.***.
*.*..
결과
01*21
123*1
2*532
3***1
*4*31
"""
from pprint import pprint
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] == ".":
count = 0
for i1 in [-1,0,1]:
if 0<=i+i1<=row-1 :
for j1 in [-1,0,1]:
if 0<=j+j1<=col-1:
if matrix[i+i1][j +j1] == "*":
count += 1
matrix[i][j] = str(count)
pprint(matrix,indent=5,width=col+30)
댓글