programing

파이썬에서 모든 크기의 빈 목록을 얻으려면 어떻게 해야 합니까?

bestprogram 2023. 7. 16. 13:44

파이썬에서 모든 크기의 빈 목록을 얻으려면 어떻게 해야 합니까?

기본적으로 C:에서 이 어레이와 동등한 파이썬을 원합니다.

int a[x];

하지만 파이썬에서 나는 다음과 같은 배열을 선언합니다.

a = []

문제는 다음과 같은 값을 가진 임의 슬롯을 할당한다는 것입니다.

a[4] = 1

하지만 파이썬 목록이 비어 있기 때문에 파이썬으로는 그렇게 할 수 없습니다(길이 0).

"array"가 실제로 Python 목록을 의미하는 경우,

a = [0] * 10

또는

a = [None] * 10

파이썬에서 원하는 것을 정확히 할 수 없습니다(제가 제대로 읽는다면).목록의 각 요소(또는 배열)에 대한 값을 입력해야 합니다.

하지만 다음을 시도해 보십시오.

a = [0 for x in range(N)]  # N = size of list you want
a[i] = 5  # as long as i < N, you're okay

다른 유형의 목록은 0 이외의 것을 사용합니다.None종종 좋은 선택이기도 합니다.

numpy를 사용할 수 있습니다.

import numpy as np

빈 배열의 예:

np.empty([2, 2])
array([[ -9.74499359e+001,   6.69583040e-309],
       [  2.13182611e-314,   3.06959433e-309]])  

또한 목록의 확장 방법으로 확장할 수 있습니다.

a= []
a.extend([None]*10)
a.extend([None]*20)

목록을 선언하고 각 요소를 추가하기만 하면 됩니다.예:

a = []
a.append('first item')
a.append('second item')

사용자(또는 이 질문의 다른 검색자)가 정수로 채울 연속 배열을 만드는 데 실제로 관심이 있다면, 배열 및 memoryivew고려해 보십시오.

# cast() is available starting Python 3.3
size = 10**6 
ints = memoryview(bytearray(size)).cast('i') 

ints.contiguous, ints.itemsize, ints.shape
# (True, 4, (250000,))

ints[0]
# 0

ints[0] = 16
ints[0]
# 16

특정 크기의 빈 배열을 만들 수도 있습니다.

array = [[] for _ in range(n)] # n equal to your desired size
array[0].append(5) # it appends 5 to an empty list, then array[0] is [5]

로 정의한다면array = [] * n한 항목을 수정하면 항목의 가변성 때문에 모든 항목이 동일한 방식으로 변경됩니다.

x=[]
for i in range(0,5):
    x.append(i)
    print(x[i])

실제로 C 스타일 배열을 원하는 경우

import array
a = array.array('i', x * [0])
a[3] = 5
try:
   [5] = 'a'
except TypeError:
   print('integers only allowed')

python에는 초기화되지 않은 변수의 개념이 없습니다.변수는 값에 바인딩된 이름이므로 해당 값에 무언가가 있어야 합니다.위의 예에서는 배열이 0으로 초기화됩니다.

그러나 낮은 수준의 작업에 실제로 필요하지 않는 한 파이썬에서 이는 흔치 않습니다.대부분의 경우 다른 답변에서 알 수 있듯이 빈 목록이나 빈 numpy 배열을 사용하는 것이 좋습니다.

"랜덤 슬롯"을 할당하는 방법은 사전을 사용하는 것입니다. 예를 들어 다음과 같습니다.

 a = {}     # initialize empty dictionary
 a[4] = 1   # define the entry for index 4 to be equal to 1
 a['French','red'] = 'rouge'  # the entry for index (French,red) is "rouge".

이는 "빠른 해킹"에 유용할 수 있으며, 어레이의 요소에 집중적으로 액세스할 수 없는 경우에는 조회 오버헤드가 중요하지 않습니다.그렇지 않으면 미리 할당된(예: numpy) 크기의 고정된 어레이를 사용하여 작업하는 것이 더 효율적입니다.a = np.empty(10)(길이 10의 초기화되지 않은 벡터의 경우) 또는a = np.zeros([5,5])0으로 초기화된 5x5 행렬의 경우).

비고: C 예제에서는 배열을 할당해야 합니다.int a[x];(그렇지 않음) "임의의 슬롯"(즉, 0과 x-1 사이의 정수 인덱스)을 할당하기 전.

참조:

  • dict데이터 유형: https://docs.python.org/3/library/stdtypes.html#mapping-types-dict
  • 함수 np.empty(): https://numpy.org/doc/stable/reference/generated/numpy.empty.html

언급URL : https://stackoverflow.com/questions/5205575/how-do-i-get-an-empty-list-of-any-size-in-python