programing

Python에서 특정 크기의 빈 목록을 만듭니다.

bestcode 2023. 1. 12. 22:14
반응형

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)를 사용하십시오.

목록은 항상 "읽기 가능"하며 언제든지 새 요소를 추가할 수 있습니다.

  1. ★★★★★list.insert(indexPosition, value)
  2. 가::list.append(value)
  3. 장::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

반응형