파이썬에서 모든 크기의 빈 목록을 얻으려면 어떻게 해야 합니까?
기본적으로 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
'programing' 카테고리의 다른 글
OOP 및 C의 인터페이스 (0) | 2023.07.16 |
---|---|
NS 레이아웃 제약 조건은 애니메이션으로 제작할 수 있습니까? (0) | 2023.07.16 |
텍스트를 어떻게 문장으로 나눌 수 있습니까? (0) | 2023.07.16 |
glob.glob 모듈을 사용하여 하위 폴더를 검색하려면 어떻게 해야 합니까? (0) | 2023.07.16 |
좌측 앵커와 선행 앵커의 차이점은 무엇입니까? (0) | 2023.07.16 |