Python에서 어레이를 선언하려면 어떻게 해야 합니까?
Python에서 어레이를 선언하려면 어떻게 해야 합니까?
variable = []
, 이제variable
는 빈 목록을* 나타냅니다.
물론 이것은 임무이지 선언서가 아니다.Python은 동적으로 입력되기 때문에 Python에서는 "이 변수는 목록 이외의 것을 참조해서는 안 된다"고 말할 수 없습니다.
*기본 내장 Python 유형은 배열이 아닌 목록이라고 합니다.이 컨테이너는 임의의 길이의 정렬된 컨테이너로 이기종 오브젝트 컬렉션을 저장할 수 있습니다(타입은 중요하지 않고 자유롭게 혼합할 수 있습니다).이것은 C에 가까운 타입을 제공하는 모듈과 혼동해서는 안 됩니다.array
라고 입력합니다. 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.
이것은 Python에서는 놀라울 정도로 복잡한 주제입니다.
실용적인 답변
은 등급으로 됩니다.list
(참조를 참조하고 제너레이터와 혼합하지 마십시오).
사용 예를 확인해 주세요.
# empty array
arr = []
# init with values (can contain mixed types)
arr = [1, "eels"]
# get item by index (can be negative to access end of array)
arr = [1, 2, 3, 4, 5, 6]
arr[0] # 1
arr[-1] # 6
# get length
length = len(arr)
# supports append and insert
arr.append(8)
arr.insert(6, 7)
이론적 답변
Python Python's Fython's Featon'의 후드 아래list
는 항목에 대한 참조를 포함하는 실제 배열의 래퍼입니다.또한 기본 어레이는 여유 공간을 사용하여 생성됩니다.
그 결과는 다음과 같습니다.
- 저렴하다(랜덤 액세스).
arr[6653]
와 같다arr[0]
) append
이지만, 여분의 .insert
가 많이 들다
또, 어레이, 레퍼런스 어레이, 링크 리스트의 가장 중요한 차이를 나타내려고 하고 있는 이 그림을 참조해 주세요.
실제로 선언하는 것은 아니지만 Python에서 어레이를 작성하는 방법은 다음과 같습니다.
from array import array
intarray = array('i')
자세한 내용은 http://docs.python.org/library/array.html 어레이 모듈을 참조하십시오.
어레이가 아니라 리스트가 필요하지만 이미 다른 사용자가 이에 응답했습니다.:)
처음 30개의 셀이 이미 채워진 목록을 원하는 것 같습니다.그렇게
f = []
for i in range(30):
f.append(0)
이를 사용할 수 있는 예로는 피보나치 시퀀스를 들 수 있습니다.프로젝트 오일러의 문제 2 참조
다음과 같습니다.
my_array = [1, 'rebecca', 'allard', 15]
계산에는 다음과 같은 numpy 배열을 사용합니다.
import numpy as np
a = np.ones((3,2)) # a 2D array with 3 rows, 2 columns, filled with ones
b = np.array([1,2,3]) # a 1D array initialised using a list [1,2,3]
c = np.linspace(2,3,100) # an array with 100 points beteen (and including) 2 and 3
print(a*1.5) # all elements of a times 1.5
print(a.T+b) # b added to the transpose of a
이러한 numpy 어레이는 디스크에서 저장 및 로딩(압축도 가능)할 수 있습니다.또한 대량의 요소를 사용한 복잡한 계산은 C와 같은 속도로 이루어집니다.
과학 환경에서 많이 사용됩니다.자세한 내용은 여기를 참조해 주세요.
JohnMachin의 코멘트가 진짜 답이어야 한다.다른 답은 모두 회피책일 뿐이라고 생각합니다!그래서:
array=[0]*element_count
python의 배열은 목록으로 표현된다는 몇 가지 기여가 있습니다.은 Python을 하고 있습니다.array()
모듈 array
array.array()
이치노릇을 하다목록은 python의 목록이므로 사용하는 명명법에 주의하십시오.
list_01 = [4, 6.2, 7-2j, 'flo', 'cro']
list_01
Out[85]: [4, 6.2, (7-2j), 'flo', 'cro']
과 목록 사이에는 가 한 .array.array()
. 순서부여된array.는 비동종시퀀스입니다 이들 오브젝트는 모두 순서부여된 시퀀스이지만 array.array()는 순서부여된 동종시퀀스이며 리스트는 비동종시퀀스입니다.
Python에서는 아무것도 선언하지 않습니다.그냥 쓰세요.http://diveintopython.net 같은 것부터 시작할 것을 권장합니다.
저는 보통 이렇게 해요.a = [1,2,3]
'아예'입니다.list
가 arrays
이 정식 정의를 보세요
Lennart의 답변을 추가하기 위해 다음과 같은 배열이 생성될 수 있습니다.
from array import array
float_array = array("f",values)
여기서 값은 tuple, list 또는 np.array 형식을 사용할 수 있지만 배열 형식은 사용할 수 없습니다.
values = [1,2,3]
values = (1,2,3)
values = np.array([1,2,3],'f')
# 'i' will work here too, but if array is 'i' then values have to be int
wrong_values = array('f',[1,2,3])
# TypeError: 'array.array' object is not callable
출력은 그대로입니다.
print(float_array)
print(float_array[1])
print(isinstance(float_array[1],float))
# array('f', [1.0, 2.0, 3.0])
# 2.0
# True
목록의 대부분의 메서드는 어레이에서도 동작합니다.일반적인 메서드는 pop(), extend() 및 append()입니다.
답변과 코멘트로 미루어 볼 때 어레이 데이터 구조는 그다지 인기가 없는 것 같습니다.목록보다 태플을 더 좋아하는 것처럼 나도 좋아.
어레이 구조에는 목록이나 np.array보다 엄격한 규칙이 있으며, 이를 통해 오류를 줄이고 디버깅을 쉽게 할 수 있습니다. 특히 수치 데이터를 사용할 때 그렇습니다.
플로트를 int 어레이에 삽입/추가하려고 하면 TypeError가 발생합니다.
values = [1,2,3]
int_array = array("i",values)
int_array.append(float(1))
# or int_array.extend([float(1)])
# TypeError: integer argument expected, got float
따라서 배열 형식에서 정수(예를 들어 인덱스 목록)인 값을 유지하면 배열이 np.array 및 목록과 마찬가지로 반복될 수 있으므로 "TypeError: 목록 인덱스는 부동이 아닌 정수여야 합니다"를 방지할 수 있습니다.
int_array = array('i',[1,2,3])
data = [11,22,33,44,55]
sample = []
for i in int_array:
sample.append(data[i])
int를 플로트 배열에 추가하면 예외 없이 int가 플로트가 됩니다.
np.array는 엔트리에 대해서도 동일한 데이터 유형을 유지하지만 오류를 발생시키는 대신 데이터 유형을 새 엔트리에 맞게 변경합니다(일반적으로 double 또는 str).
import numpy as np
numpy_int_array = np.array([1,2,3],'i')
for i in numpy_int_array:
print(type(i))
# <class 'numpy.int32'>
numpy_int_array_2 = np.append(numpy_int_array,int(1))
# still <class 'numpy.int32'>
numpy_float_array = np.append(numpy_int_array,float(1))
# <class 'numpy.float64'> for all values
numpy_str_array = np.append(numpy_int_array,"1")
# <class 'numpy.str_'> for all values
data = [11,22,33,44,55]
sample = []
for i in numpy_int_array_2:
sample.append(data[i])
# no problem here, but TypeError for the other two
이것은 과제 수행 중에도 해당됩니다.데이터 유형을 지정하면 np.array는 가능한 경우 엔트리를 해당 데이터 유형으로 변환합니다.
int_numpy_array = np.array([1,2,float(3)],'i')
# 3 becomes an int
int_numpy_array_2 = np.array([1,2,3.9],'i')
# 3.9 gets truncated to 3 (same as int(3.9))
invalid_array = np.array([1,2,"string"],'i')
# ValueError: invalid literal for int() with base 10: 'string'
# Same error as int('string')
str_numpy_array = np.array([1,2,3],'str')
print(str_numpy_array)
print([type(i) for i in str_numpy_array])
# ['1' '2' '3']
# <class 'numpy.str_'>
또는 본질적으로는 다음과 같습니다.
data = [1.2,3.4,5.6]
list_1 = np.array(data,'i').tolist()
list_2 = [int(i) for i in data]
print(list_1 == list_2)
# True
어레이는 다음과 같은 기능을 제공합니다.
invalid_array = array([1,2,3.9],'i')
# TypeError: integer argument expected, got float
따라서 유형별 명령어에는 np.array를 사용하는 것이 좋습니다.배열 구조는 여기서 유용합니다.list는 값의 데이터 유형을 유지합니다.
데이터 타입은 array()의 첫 번째 인수로 지정되지만 (보통) np.array()의 두 번째 인수로 지정됩니다.:|
C와의 관계는 여기서 참조됩니다.Python List vs. 어레이 - 언제 사용합니까?
즐거운 탐험 되세요!
주의: 배열의 유형적이고 다소 엄격한 성질은 Python보다는 C에 더 기울어져 있으며, 설계상 Python은 그 기능에서 유형별 제약이 많지 않습니다.이러한 비인기 때문에 협업 작업에서도 긍정적인 피드백을 얻을 수 있으며, 이를 대체하려면 대부분 추가 [파일 내 x에 대한 int(x)]가 필요합니다.따라서 배열의 존재를 무시하는 것은 전적으로 실행 가능하고 합리적입니다.어떤 식으로든 우리 모두를 방해해서는 안 됩니다. : D
이건 어때...
>>> a = range(12)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> a[7]
6
Lennart에 이어 균일한 다차원 어레이를 구현하는 numpy도 있습니다.
Python은 그것들을 목록이라고 부른다.목록 리터럴은 대괄호 및 쉼표로 쓸 수 있습니다.
>>> [6,28,496,8128]
[6, 28, 496, 8128]
문자열 배열이 있었고 True로 시작하는 같은 길이의 부울 배열이 필요했습니다.이게 내가 한 일이야
strs = ["Hi","Bye"]
bools = [ True for s in strs ]
목록을 생성하여 어레이로 변환하거나 numpy 모듈을 사용하여 어레이를 생성할 수 있습니다.다음은 동일한 예를 보여 주는 몇 가지 예입니다.또한 Numpy는 다차원 어레이로 작업하기 쉽게 합니다.
import numpy as np
a = np.array([1, 2, 3, 4])
#For custom inputs
a = np.array([int(x) for x in input().split()])
또한 입력값을 행렬의 치수로 받아들이는 재형성 함수를 사용하여 이 배열을 2X2 행렬로 재구성할 수도 있습니다.
mat = a.reshape(2, 2)
# This creates a list of 5000 zeros
a = [0] * 5000
배열과 마찬가지로 [n] 표기로 이 목록의 모든 요소를 읽고 쓸 수 있습니다.
어레이와 같은 랜덤액세스 퍼포먼스를 가지는 것 같습니다.필요에 따라 문자열과 오브젝트 등 다양한 유형의 혼합도 지원하므로 메모리를 어떻게 할당하는지는 알 수 없습니다.
언급URL : https://stackoverflow.com/questions/1514553/how-do-i-declare-an-array-in-python
'programing' 카테고리의 다른 글
Javascript를 사용하여 CSS 파일을 로드하는 방법은 무엇입니까? (0) | 2022.09.30 |
---|---|
vue 구성 요소 내부에 외부 js를 포함하는 방법 (0) | 2022.09.30 |
mysql 각 행에 한 테이블의 데이터를 다른 테이블과 결합 (0) | 2022.09.30 |
파일의 절대 경로 가져오기 (0) | 2022.09.30 |
pom.xml의 modelVersion이 필요하고 항상 4.0.0으로 설정되어 있는 이유는 무엇입니까? (0) | 2022.09.30 |