본문 바로가기
Python/Python FAQ

Python 파이썬에서 특정 크기의 빈 리스트를 만드는 방법, Create an empty list with certain size in Python

by 베타코드 2023. 6. 27.
반응형

질문


빈 목록을 만들고 10개의 요소를 보유하는 방법은 무엇인가요?

그 후에, 그 목록에 값을 할당하려고 합니다. 예를 들면:

xs = list()
for i in range(0, 9):
   xs[i] = i

하지만, 그것은 IndexError: list assignment index out of range을 반환합니다. 왜 그럴까요?


Editor's note:

파이썬에서, 목록은 고정된 용량이 없습니다, 하지만 이미 존재하지 않는 요소에 할당하는 것은 불가능합니다. 여기에서 제시된 답변들은 나중에 대체할 10개의 "더미" 요소를 가진 목록을 생성하는 코드를 보여줍니다. 그러나 대부분의 초보자들은 이 문제를 마주할 때 요소를 추가하여 목록을 구축하고 싶어합니다. 이는 .append 메서드를 사용하여 수행해야 하지만, 종종 목록을 더 직접적으로 만드는 문제별 방법이 있을 수 있습니다. 자세한 내용은 Why does this iterative list-growing code give IndexError: list assignment index out of range? How can I repeatedly add elements to a list?를 참조하십시오.


답변


xs[i] = value와 같이 리스트에 할당할 수 없습니다. 이 경우 리스트는 적어도 i+1개의 요소로 초기화되어 있어야 합니다(첫 번째 인덱스는 0이기 때문입니다). 대신, 리스트 끝에 요소를 추가하려면 xs.append(value)를 사용하세요(리스트 대신 딕셔너리를 사용하는 경우 할당 표기법을 사용할 수 있습니다).

빈 리스트 만들기:

>>> xs = [None] * 10
>>> xs
[None, None, None, None, None, None, None, None, None, None]

위의 리스트의 기존 요소에 값을 할당하는 방법:

>>> xs[1] = 5
>>> xs
[None, 5, None, None, None, None, None, None, None, None]

리스트가 10개의 요소만 가지고 있기 때문에 xs[15] = 5와 같은 것은 실패합니다.

range(x)는 [0, 1, 2, ... x-1]의 리스트를 생성합니다.

# 파이썬 2.X에서만 사용 가능합니다. 3.X에서는 list(range(10))을 사용하세요.
>>> xs = range(10)
>>> xs
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

함수를 사용하여 리스트 만들기:

>>> def display():
...     xs = []
...     for i in range(9): # 리스트를 만드는 방법을 보여주기 위한 것입니다.
...         xs.append(i)
...     return xs
... 
>>> print display()
[0, 1, 2, 3, 4, 5, 6, 7, 8]

리스트 내포(범위에 대해서는 모두 range(0,9)를 반환할 수 있으므로 제곱을 사용합니다):

>>> def display():
...     return [x**2 for x in range(9)]
... 
>>> print display()
[0, 1, 4, 9, 16, 25, 36, 49, 64]
반응형

댓글