Python에서 특정 크기의 빈 목록을 만듭니다.
10개의 요소를 포함할 수 있는 빈 목록을 작성하려면 어떻게 해야 합니까?
그 후, 나는 그 리스트에 값을 할당하고 싶다.예를 들어 다음과 같습니다.
xs = list()
for i in range(0, 9):
xs[i] = i
그 , 「」, 「」를 얻을 수 있습니다.IndexError: list assignment index out of range
Python에서는 목록에 용량이 설정되어 있지 않지만 아직 존재하지 않는 요소에는 할당할 수 없습니다.이 답변에는 나중에 대체할 10개의 "더미" 요소가 포함된 목록을 만드는 코드가 나와 있습니다.그러나 이 문제를 접하는 대부분의 초보자들은 이 문제에 요소를 추가하여 목록을 작성하려고 합니다.이 조작은, 다음과 같이 실시할 필요가 있습니다..append
단, 대부분의 경우 보다 직접 목록을 작성하는 문제에 특화된 방법이 있습니다.이 반복적인 목록 증가 코드가 IndexError: 목록 할당 인덱스를 범위를 벗어나는 이유를 참조하십시오. 목록에 요소를 반복적으로 추가하려면 어떻게 해야 합니까?자세한 것은, 을 참조해 주세요.
할 수 .xs[i] = value
(「」로 되어 있지 않은 i+1
. ㅇㅇㅇ를 사용하세요.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]
할 점은 ''와 같은 입니다.xs[15] = 5
리스트에는 10개의 요소밖에 없기 때문에 아직 실패합니다.
range(x)는 [0, 1, 2, ...x-1]에서 목록을 만듭니다.
# 2.X only. Use list(range(10)) in 3.X.
>>> xs = range(10)
>>> xs
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
함수를 사용하여 목록 만들기:
>>> def display():
... xs = []
... for i in range(9): # This is just to tell you how to create a list.
... 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]
대신 다음을 시도해 보십시오.
lst = [None] * 10
10의 각는 「10」으로 됩니다.None
런음
lst = [None] * 10
for i in range(10):
lst[i] = i
인정하건대, 그건 피톤식 방식이 아니야.이렇게 하는 것이 좋습니다.
lst = []
for i in range(10):
lst.append(i)
또는 Python 2.x에서는 0에서 9 사이의 값을 가진 목록을 초기화하기 위해 다음과 같이 할 수 있습니다.
lst = range(10)
Python 3.x의 경우:
lst = list(range(10))
현재 받아들여지고 있는 바룬의 답변
>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]
숫자와 같은 비기준 유형에 적합합니다.유감스럽게도 목록 목록을 작성하려는 경우 참조 오류가 발생합니다.Python 2.7.6의 예:
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
보시다시피 각 요소는 동일한 목록 개체를 가리키고 있습니다.이를 피하기 위해 각 위치를 다른 개체 참조로 초기화하는 메서드를 작성할 수 있습니다.
def init_list_of_objects(size):
list_of_objects = list()
for i in range(0,size):
list_of_objects.append( list() ) #different object reference each time
return list_of_objects
>>> a = init_list_of_objects(10)
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
(함수를 쓰는 것이 아니라) 기본 내장 python 방식이 있을 것 같은데, 그게 뭔지 모르겠어요.정정해 주시면 감사하겠습니다!
★★★입니다.[ [] for _ in range(10)]
예:
>>> [ [random.random() for _ in range(2) ] for _ in range(5)]
>>> [[0.7528051908943816, 0.4325669600055032], [0.510983236521753, 0.7789949902294716], [0.09475179523690558, 0.30216475640534635], [0.3996890132468158, 0.6374322093017013], [0.3374204010027543, 0.4514925173253973]]
"빠른" 방법에는 다음 두 가지가 있습니다.
x = length_of_your_list
a = [None]*x
# or
a = [None for _ in xrange(x)]
것 요.[None]*x
★★★★★★★★★★★★★★★★★★:
>>> from timeit import timeit
>>> timeit("[None]*100",number=10000)
0.023542165756225586
>>> timeit("[None for _ in xrange(100)]",number=10000)
0.07616496086120605
범위(를 들면, 「」: 「」)에 가 없는 는, 「」를 해 주세요.[0,1,2,3,...,x-1]
、 。range(x)
을 사용하다
>>> timeit("range(100)",number=10000)
0.012513160705566406
하면 돼요..append(element)
목록으로 이동합니다. §:s1.append(i)
하는 요소)에 s1[i]
존재하지 않습니다.
아무도 빈 목록을 만드는 간단한 방법을 제안하지 않는 것이 놀랍습니다.이것은 오래된 스레드이지만, 단지 완성도를 높이기 위해서 이것을 추가합니다.빈 리스트 10개의 리스트가 생성됩니다.
x = [[] for i in range(10)]
받아들여진 답변에는 약간의 고차들이 있다.예를 들어 다음과 같습니다.
>>> a = [{}] * 3
>>> a
[{}, {}, {}]
>>> a[0]['hello'] = 5
>>> a
[{'hello': 5}, {'hello': 5}, {'hello': 5}]
>>>
그래서 각 사전은 같은 대상을 참조합니다.어레이 또는 개체를 사용하여 초기화하는 경우에도 마찬가지입니다.
대신 이 작업을 수행할 수 있습니다.
>>> b = [{} for i in range(0, 3)]
>>> b
[{}, {}, {}]
>>> b[0]['hello'] = 6
>>> b
[{'hello': 6}, {}, {}]
>>>
중 하나2D 매트릭스 만들기n
"CHANGE: "CHANGE:
m = [[None for _ in range(n)] for _ in range(n)]
10개의 요소를 포함할 수 있는 빈 목록을 작성하려면 어떻게 해야 합니까?
모든 목록에는 사용 가능한 메모리 제한에 따라 원하는 만큼의 요소를 포함할 수 있습니다.목록에서 중요한 유일한 "크기"는 현재 목록에 있는 요소의 수입니다.
그 , 「」, 「」를 얻을 수 있습니다.
IndexError: list assignment index out of range
때 " " "i
0
해서 xs[0] = 0
에 이 따라서 0개의 요소가 있기 때문에 동작하지 않습니다.0
유효한 인덱스가 아닙니다.
인덱스를 사용하여 아직 존재하지 않는 목록 요소를 쓸 수 없습니다. 기존 요소만 덮어쓸 수 있습니다.'아까', '아까', '아까', '아까', '아까', '아까',.append
★★★★
xs = list();
for i in range(0, 9):
xs.append(i)
요소밖에 입니다. 은 9개의 요소를 입니다.range
기능.(부기사항:[]
가 있습니다.list()
range
왕기에서 시작하는0
으로써 얻을 수 있는 것은 다음과 같습니다. 이러한 문제에 대처함으로써 얻을 수 있는 것은 다음과 같습니다.
xs = []
for i in range(10):
xs.append(i)
요 - 하만,, 것 - - - however however however however however however however however however however however however however however however however however however however however however however however however.range
의 .for
를 들면def
입니다.
2 2.x의 range
이 함수는 우리가 이미 원했던 목록을 직접 반환하는 함수입니다.
xs = range(10) # 2.x specific!
# In 3.x, we don't get a list; we can do a lot of things with the
# result, but we can't e.g. append or replace elements.
3 3.x의 range
교묘하게 설계된 클래스입니다.range(10)
을 사용하다 목록을을 ""에 .list
★★★★★★★★★★★★★★★★★★:
xs = list(range(10)) # correct in 3.x, redundant in 2.x
초기화된 목록을 만드는 가장 쉬운 방법은 이러한 답변 중 하나가 아니라는 사실에 조금 놀랐습니다.전전 the in in 하면 됩니다.list
★★★★
list(range(9))
다른 옵션은 (포인터의) 고정 크기 배열에 numpy를 사용하는 것입니다.
> pip install numpy
import numpy as np
a = np.empty(10, dtype=np.object)
a[1] = 2
a[5] = "john"
a[3] = []
숫자만 원하는 경우 numpy를 사용할 수 있습니다.
a = np.arange(10)
입력에서 행 수를 읽을 수 있는 python의 2D 목록에 대한 내 코드는 다음과 같습니다.
empty = []
row = int(input())
for i in range(row):
temp = list(map(int, input().split()))
empty.append(temp)
for i in empty:
for j in i:
print(j, end=' ')
print('')
비슷한 문제를 찾다가 SO 질문을 하게 되었습니다.2D 어레이를 구축한 후 각 목록의 일부 요소(2D 어레이)를 dict의 요소로 대체해야 했습니다.그리고 나서 이 SO 질문을 하게 되었고, 이것이 다른 초보자들이 돌아다니는 데 도움이 될 수도 있습니다.주요 요령은 2D 어레이를 numpy 어레이로 초기화한 후array[i,j]
array[i][j]
.
참고로 이 코드를 사용해야 했던 부분은 다음과 같습니다.
nd_array = []
for i in range(30):
nd_array.append(np.zeros(shape = (32,1)))
new_array = []
for i in range(len(lines)):
new_array.append(nd_array)
new_array = np.asarray(new_array)
for i in range(len(lines)):
splits = lines[i].split(' ')
for j in range(len(splits)):
#print(new_array[i][j])
new_array[i,j] = final_embeddings[dictionary[str(splits[j])]-1].reshape(32,1)
목록 이해 기능을 사용할 수 있지만 단순성을 위해 중첩된 루프 기능을 사용하고 있습니다.이것이 이 게시물을 접하는 다른 사람들에게 도움이 되기를 바랍니다.
기술적으로 리스트는 아니지만 기능면에서 리스트와 비슷하며 길이가 고정되어 있습니다.
from collections import deque
my_deque_size_10 = deque(maxlen=10)
꽉 찼을 경우(즉, 10개의 아이템을 얻었을 경우) 다른 아이템을 추가하면 아이템 @index 0이 파기됩니다.FIFO.. 하지만 어느 방향으로도 추가할 수 있습니다.say에 사용
- 통계의 연속 평균
- 다른 데크 오브젝트와 일치할 때까지 목록을 파이프링합니다(일명 목록 위로 창을 슬라이드합니다.
리스트가 필요한 경우 full일 경우 list(deque object)를 사용하십시오.
목록은 항상 "읽기 가능"하며 언제든지 새 요소를 추가할 수 있습니다.
- ★★★★★
list.insert(indexPosition, value)
- 가::
list.append(value)
- 장::
list.extend(value)
이 경우 길이가 0인 빈 목록을 인스턴스화했습니다.따라서 목록 인덱스(i)를 사용하여 목록에 값을 추가하려고 하면 존재하지 않는 위치를 참조합니다.따라서 "IndexError: list assignment index out of range" 오류가 발생했습니다.
대신 다음을 시도해 볼 수 있습니다.
s1 = list();
for i in range(0,9):
s1.append(i)
print (s1)
10의 리스트를 작성하려면 먼저 빈.np.empty(10)
합니다.arrayName.tolist()
또는 체인으로 묶을 수도 있습니다.
**`np.empty(10).tolist()`**
s1 = []
for i in range(11):
s1.append(i)
print s1
목록을 작성하려면 다음 괄호만 사용합니다. " "
목록에 추가하려면 list.append()를 사용합니다.
기능으로서 보다 재사용이 가능하게 합니다.
def createEmptyList(length,fill=None):
'''
return a (empty) list of a given length
Example:
print createEmptyList(3,-1)
>> [-1, -1, -1]
print createEmptyList(4)
>> [None, None, None, None]
'''
return [fill] * length
이 코드는 10개의 난수를 포함하는 배열을 생성합니다.
import random
numrand=[]
for i in range(0,10):
a = random.randint(1,50)
numrand.append(a)
print(a,i)
print(numrand)
언급URL : https://stackoverflow.com/questions/10712002/create-an-empty-list-with-certain-size-in-python
'programing' 카테고리의 다른 글
My Vue.js Vuex 스토어에는 GET 요청을 하는 두 가지 작업이 있습니다.두 번째 액션이 작동하려면 첫 번째 액션의 응답이 필요합니다.어떻게 하는 거야? (0) | 2023.01.15 |
---|---|
Panda 시리즈 전체를 예쁘게 인쇄 / Data Frame (0) | 2023.01.15 |
PHP - 줄 바꿈 문자를 만드는 방법 (0) | 2023.01.12 |
Python은 왜 여러 줄의 코멘트를 가지고 있지 않은가? (0) | 2023.01.12 |
Vuex - getter를 사용할 때와 상태를 사용할 때 (0) | 2023.01.12 |