[python] for _ in range
2차원 리스트 코딩하기
>>> [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]] 어떻게?
# 2차원 리스트 만들기
a= []
count = 0
for i in range(5):
a.append([]) # 결과: [[], [], [], [], []]
for _ in range(5):
count += 1
a[i].append(count)
print(a)
# 결과:[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]]
1. 숫자들을 넣을 빈 리스트 만들기
for i in range(5):
a.append([ ])
print(a)
# 결과: [ [ ] , [ ] , [ ] , [ ] , [ ] ]
1) for문을 순회하면서 순차적으로 i = 0,1,2,3,4 가 됩니다.
i = 0 --> 리스트 a 에 [ ] 추가 a =[ [ ] ]
i = 1 --> 리스트 a 에 [ ] 추가 a = [ [ ] , [ ] ]
i = 2 --> 리스트 a 에 [ ] 추가 a = [ [ ] , [ ] , [ ] ]
i = 3 --> 리스트 a 에 [ ] 추가 a = [ [ ] , [ ] , [ ] , [ ] ]
i = 4 --> 리스트 a 에 [ ] 추가 a = [ [ ] , [ ] , [ ] , [ ] , [ ] ]
2. 빈 리스트에 for문 이용하여 숫자 넣기
for _ in range(5):
count += 1
a[i].append(count)
1) for _ in range 는 무엇인가
_는 어떤 특정값을 무시하기 위한 용도로 사용되기도한다.
값이 필요하지 않거나 사용되지 않는 값을 _에 할당할 수 있다.
index가 필요없는 for loop문에 사용할 수 있다.(index 지정X)
# 1.특정값 무시
x, _, y = (1, 2, 3) # x = 1, y = 3
# 2.여러개의 값 무시
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5
# 3.인덱스 무시: 단순히 print만 하는 반복문에서는 index가 의미가 없다.
for _ in range(3):
print("weekend!")
'''3.결과
weekend!
weekend!
weekend!
'''
2) 2중첩 반복문
아래 코드가 정확히 이해가 되지 않는다면 아래 자세한 설명을 보면 바로 이해가 될 것이다!
a= []
count = 0
for i in range(5):
a.append([])
for _ in range(5):
count += 1
a[i].append(count)
print(a)
① 첫번째 for문: i = 0 / 두번째 for문: _ = 0,1,2,3,4
>>> i = 0 일때 _ 는 5번 반복하게 됨
첫번째 for문) a = [ [ ] ]
두번째 for문) count = 1
a[0].append(1)
a = [ [1] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 2
a[0].append(2)
a = [ [1,2] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 3
a[0].append(3)
a = [ [1,2,3] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 4
a[0].append(4)
a = [ [1,2,3,4] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 5
a[0].append(5)
a = [ [1,2,3,4,5] ] # 두번째 for문 끝남, 첫번째 for문으로 돌아감(i = 1로 다시 시작)
② 첫번째 for문: i = 1 / 두번째 for문: _ = 0,1,2,3,4
>>> i = 1 일때 _ 는 5번 반복하게 됨
첫번째 for문) a = [ [ 1,2,3,4,5 ], [ ] ]
두번째 for문) count = 6
a[1].append(6)
a = [ [ 1,2,3,4,5 ], [6] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 7
a[1].append(7)
a = [ [ 1,2,3,4,5 ], [ 6,7 ] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 8
a[1].append(8)
a = [ [ 1,2,3,4,5 ], [ 6,7,8 ] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 9
a[1].append(9)
a = [ [ 1,2,3,4,5 ], [ 6,7,8,9 ] ] # 한 번 반복 끝남 다시 2번째 for문으로 돌아감
count = 10
a[1].append(10)
a = [ [ 1,2,3,4,5 ], [ 6,7,8,9,10 ] ] # 두번째 for문 끝남, 첫번째 for문으로 돌아감(i = 2로 다시 시작)
③ i = 2
④ i = 3
⑤ i = 4 끝!
이런 식으로 진행되어서 아래와 같이 나오게 된다!
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]]
처음에 답을 보고도 이해가 안되어서 걱정했는데
모르는 것들을 하나하나 찾으니 이제 완벽히 이해가 되었다.
for문에서 index를 꼭 써야 한다고 생각했는데
_ 를 사용해서 단순 반복만 하게 할 수 있는 점이 재밌었다.
다음에 활용할 수 있으면 좋겠다.
참고자료덕분에 이해가 잘 되었다.
내 글을 for문에만 집중하였으므로 _의 사용에 대해 더 알고싶다면 참고자료를 꼭 보면 좋을 듯하다.