기본적으로 C에서 이와 동등한 파이썬을 원합니다.
int a[x];
하지만 파이썬에서는 다음과 같은 배열을 선언합니다.
a = []
문제는 다음과 같은 값으로 임의의 슬롯을 할당하고 싶다는 것입니다.
a[4] = 1
그러나 배열이 비어 있기 때문에 파이썬으로는 할 수 없습니다.
기본적으로 C에서 이와 동등한 파이썬을 원합니다.
int a[x];
하지만 파이썬에서는 다음과 같은 배열을 선언합니다.
a = []
문제는 다음과 같은 값으로 임의의 슬롯을 할당하고 싶다는 것입니다.
a[4] = 1
그러나 배열이 비어 있기 때문에 파이썬으로는 할 수 없습니다.
답변:
파이썬에서 원하는 것을 정확히 할 수는 없습니다 (내가 올바르게 읽었다면). 목록의 각 요소에 대한 값을 입력해야합니다 (또는 배열이라고 부르는대로).
그러나 이것을 시도하십시오.
a = [0 for x in range(N)] # N = size of list you want
a[i] = 5 # as long as i < N, you're okay
다른 유형 목록의 None
경우 0 이외의 것을 사용하십시오. 종종 좋은 선택입니다.
range(N)
Python이 3.0 미만이면 이미 목록을 생성합니다.
xrange(N)
Python 2.x에서 사용할 수 있습니다 . 그러나 나는 그것이 잘못된 것과 어떻게 접하고 있는지 잘 모르겠습니다. a = range(N)
모든 요소가 합리적인 "기본값"에서 시작 하기 때문에 선호합니다 . 의견의 문제라고 생각합니다.
numpy를 사용할 수 있습니다.
import numpy as np
빈 배열의 예 :
np.empty([2, 2])
array([[ -9.74499359e+001, 6.69583040e-309],
[ 2.13182611e-314, 3.06959433e-309]])
당신 (또는이 질문의 다른 검색 자)이 실제로 정수로 채우기 위해 연속 배열을 만드는 데 관심이 있다면 bytearray 및 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
실제로 C 스타일 배열을 원한다면
import array
a = array.array('i', x * [0])
a[3] = 5
try:
[5] = 'a'
except TypeError:
print('integers only allowed')
파이썬에는 초기화되지 않은 변수의 개념이 없습니다 . 변수는 값에 바인딩 된 이름이므로 해당 값에는 무언가가 있어야합니다. 위의 예에서 배열은 0으로 초기화됩니다.
그러나 실제로 저수준 항목에 필요하지 않는 한 이것은 파이썬에서 흔하지 않습니다. 대부분의 경우 다른 답변에서 알 수 있듯이 빈 목록 또는 빈 numpy 배열을 사용하는 것이 좋습니다.
a = [obj] * N
배열의 각 요소에 동일한 obj가 나타납니다. 변경 가능한 obj이고 하나의 항목을 수정하면 모두 변경됩니다. ...하지만 정수 (또는 다른 불변 유형)를 사용하는이 예에서는 차이가 없습니다. 또는 요소에 할당 만하면 문제가되지 않습니다. (정확히 그렇게 자주했기 때문에 언급합니다. :))