ROKO

[Python] list slicing replace 본문

Develop

[Python] list slicing replace

RO_KO 2023. 3. 5. 00:28
728x90

baekjun에서 알고리즘 문제를 풀다가 리스트를 슬라이싱해 값을 대입하기 위해 코드를 구현했다.

(10810번)

import sys

N, M = map(int, sys.stdin.readline().strip().split())

array = [0 for x in range(N)]

for i in range(M):
    s,e,n = map(int, sys.stdin.readline().strip().split())
    array[s-1:e] = n
    
print(*array)

그 결과

Traceback (most recent call last):
  File "/Users/keonwoo-ro/Desktop/baekjun/Stage/Array_1/10810.py", line 9, in <module>
    array[s-1:e] = n
TypeError: can only assign an iterable

에러가 발생하였는데, 간략하게 말하자면 슬라이싱한 리스트영역의 개수와 대치하고자 하는 값의 개수가 일치해야 한다는 것이다.

numpy, torch를 많이 사용하다보니 이러한 차이를 인지하지 못했다. 새삼 numpy가 정말 편리하다는 생각이 든다. 알고리즘 문제를 numpy로 푸는 사람도 있을까?

 

수정하여 올바른 코드를 작성했다.

import sys

N, M = map(int, sys.stdin.readline().strip().split())

array = [0 for x in range(N)]

for i in range(M):
    s,e,n = map(int, sys.stdin.readline().strip().split())
    array[s-1:e] = [n for x in range(e-s+1)]
    
print(*array)
728x90

'Develop' 카테고리의 다른 글

[Mac] vscode PATH 설정 오류  (0) 2023.03.22
Prompt Engineer  (0) 2023.03.12
[Python] LIST.sort() vs sorted(LIST)  (0) 2023.03.02
[Python] input() vs sys.stdin.readline()  (0) 2023.03.01
Comments