Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Array — Python의 효율적인 숫자 값 배열

<시간/>

배열은 C/C++, Java 등에서 매우 널리 사용되는 데이터 구조입니다. 이러한 언어에서 배열은 유사한 데이터 유형의 둘 이상의 요소 모음으로 정의됩니다. Python에는 배열에 해당하는 내장 기능이 없습니다. List와 Tuple은 요소의 모음이지만 유형이 다를 수 있습니다.

Python의 배열 모듈은 C 유형 배열을 에뮬레이트합니다. 모듈은 '배열' 클래스를 정의합니다. 다음 생성자는 배열 객체를 생성합니다:

array(typecode, initializer)

typecode 인수는 배열의 유형을 결정합니다. 이니셜라이저는 일치하는 유형의 모든 요소가 포함된 시퀀스여야 합니다.

다음 문은 정수 배열 개체를 만듭니다.

>>> import array
>>> arr = array.array('i', range(5))
>>> arr
array('i', [0, 1, 2, 3, 4])
>>> type(arr)
<class 'array.array'>
>>> array.typecodes
'bBuhHiIlLqQfd'

배열 모듈은 문자열을 반환하는 typecodes 속성을 정의합니다. 문자열의 각 문자는 C 유형 및 이에 상응하는 Python 유형을 나타내는 유형 코드를 나타냅니다.

유형 코드 C 유형 파이썬 유형
'b' 서명된 문자 int
'B' 서명되지 않은 문자 int
'u' Py_UNICODE 유니코드 문자
'h' 짧게 서명 int
'H' 부호 없는 약식 int
'i' 서명된 정수 int
'나' 부호 없는 정수 int
'' 기호가 긴 int
'L' 부호 없는 long int
'q' 서명된 long long int
'Q' 부호 없는 long long int
'f' 플로트 플로트
'd' 이중 플로트

이니셜라이저 인수는 객체와 같은 바이트일 수 있습니다. 다음 예제는 문자열의 바이트 표현에서 배열을 만듭니다.

>>> arr1 = array.array('b', b'Hello')
>>> arr1
array('b', [72, 101, 108, 108, 111])

배열 클래스는 다음 메서드를 정의합니다.

array.buffer_info()

이 메서드는 현재 메모리 주소와 배열의 내용을 보관하는 데 사용되는 버퍼 요소의 길이를 제공하는 튜플(주소, 길이)을 반환합니다.

>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr.buffer_info()
(2201141755144, 5)

카운트()

이 메서드는 배열에서 특정 요소의 발생 횟수를 반환합니다.

>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr.count(2)
1

확장()

이 메서드는 iterable의 항목을 배열의 끝에 추가하거나 정확히 같은 유형 코드를 가져야 하는 iterable에 추가합니다. 그렇지 않으면 TypeError가 발생합니다.

>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr1 = array.array('i',[10,20,30])
>>> arr.extend(arr1)
>>> arr
array('i', [0, 1, 2, 3, 4, 10, 20, 30])

fromfile()

이 메서드는 파일 개체에서 n개의 항목(머신 값으로)을 읽고 배열에 추가합니다.

다음 예에서는 먼저 바이너리 쓰기 모드에서 파일을 엽니다.

>>> file = open('test.txt','wb')
>>> file.write(b'Hello Python')
12
>>> file.close()

이제 이 파일을 사용하여 데이터를 배열 개체에 추가합니다.

>>> a = array.array('i')
>>> file = open('test.txt','rb')
>>> a.fromfile(file,file.tell())
>>> a
array('i', [1819043144, 2035294319, 1852794996])

추가()

이 메서드는 배열의 끝에 새 항목을 추가합니다.

fromlist()

이 메서드는 목록의 항목을 배열에 추가합니다. 이것은 목록의 x에 대해 다음과 같습니다. a.append(x)

>>> a = array.array('i')
>>> a.append(10)
>>> a
array('i', [10])
>>> num = [20,30,40,50]
>>> a.fromlist(num)
>>> a
array('i', [10, 20, 30, 40, 50])

삽입()

지정된 위치 이전에 배열에 새 항목 삽입

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> a.insert(2,25)
>>> a
array('i', [10, 20, 25, 30, 40, 50])

팝()

이 메서드는 배열에서 항목을 제거한 후 지정된 인덱스의 항목을 반환합니다.

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> x = a.pop(2)
>>> x
30
>>> a
array('i', [10, 20, 40, 50])

제거()

이 메소드는 배열에서 주어진 항목의 첫 번째 항목을 제거합니다.

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> a.remove(30)
>>> a
array('i', [10, 20, 40, 50])

토파일()

이 메서드는 쓰기 권한이 활성화된 파일 개체에 모든 항목을 씁니다.

>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> file = open("test.txt","wb")
>>> a.tofile(file)
>>> file.close()
>>> file = open("test.txt","rb")
>>> file.read()
b'\n\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00(\x00\x00\x002\x00\x00\x00'