#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2018/6/15 9:35
# @File : array_demo1.py
import array
# 该模块定义了一个对象类型,可以表示一个基本值的数组:整数(b, B, h, H, i, I, l, L, q, Q)、浮点数(f or d)、字符(u)。
# array.array(typecode,[initializer])——typecode:元素类型代码;initializer:初始化器,若数组为空,则省略初始化器。
arr = array.array('i', [0, 1, 1, 2, 3])
print(arr, type(arr))
# array('i', [0, 1, 1, 2, 3]) <class 'array.array'>
for i in arr: # (must be b, B, u, h, H, i, I, l, L, q, Q, f or d)
print(i, type(i)) # 数组中的值 0 <class 'int'>
print(arr[0]) # 按照下标取值
# array.typecodes——模块属性
print('
输出一条 包含所有可用类型代码的字符串:')
print('array.typecodes------------', array.typecodes) # 注意,调用者是模块名,不是某个对象
# array.typecodes------------ bBuhHiIlLqQfd
# array.typecode——对象属性
print('
输出 用于创建数组的类型代码字符:')
print('arr.typecode---------', arr.typecode)
# arr.typecode--------- i
# array.itemsize——对象属性
print('
输出 数组中一个元素的字节长度')
print('arr.itemsize---------', arr.itemsize)
# arr.itemsize--------- 4 一个数字四个字节
ar1 = array.array('u', ['a', '5', 'j']) # 字符类型必须是u
print('ar1.itemsize---------', ar1.itemsize)
# ar1.itemsize--------- 2 一个字符2个字节
# array.append(x)——对象方法
print('
将一个新值附加到数组的末尾:')
arr.append(4)
print('arr--append---------', arr)
# arr--append--------- array('i', [0, 1, 1, 2, 3, 4])
# array.buffer_info()——对象方法
print('
获取数组在存储器中的地址、元素的个数,以元组形式(地址,长度)返回:')
print('arr.buffer_info()------------', arr.buffer_info())
# arr.buffer_info()------------ (39148320, 6)
# array.count(x)——对象方法
print('
获取某个元素在数组中出现的次数:')
print('arr.count(1)-------------', arr.count(1))
# array.extend(iterable)——对象方法:将可迭代对象的元素序列附加到数组的末尾,合并两个序列
print('
将可迭代对象的元素序列附加到数组的末尾,合并两个序列:')
# 注意:附加元素数值类型必须与调用对象的元素的数值类型一致
_list = [5, 6, 7]
arr.extend(_list)
print('arr------extend----', arr)
# arr------extend---- array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7])
_list1 = (5, 6, 7)
arr.extend(_list1)
print('arr------extend----', arr) # 元祖也是可以合并
# arr------extend---- array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7])
_list2 = {1: 4, 2: 2}
arr.extend(_list2)
print(arr) # 惊呆了,字典也可以合并
# array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 1, 2])
'''
但是字典劲限于数字字典,字符的不行
_dict = {'1801': '邓', '1802': '杜'}
arr.extend(_dict)
print(arr)
'''
# array.fromlist(list)——对象方法:将列表中的元素追加到数组后面,相当于for x in list: a.append(x)
print('
将列表中的元素追加到数组后面,相当于for x in list: a.append(x):')
arr.fromlist(_list)
print('fromlist-------------', arr)
# fromlist------------- array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 1, 2, 5, 6, 7])
# array.index(x)——对象方法:返回数组中x的最小下标
print('
返回数组中1的最小下标:')
print('index-----------', arr.index(2))
# array.insert(i,x)——对象方法:在下标i(负值表示倒数)之前插入值x
print('
在下标1(负值表示倒数)之前插入值0:')
arr.insert(-2, 0)
print('insert----------------', arr)
# insert---------------- array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 1, 2, 5, 0, 6, 7])
arr.insert(len(arr), 0) # 在最后一个位置插入元素,和append一个效果
print(arr)
# array('i', [0, 1, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 1, 2, 5, 0, 6, 7, 0])
# array.pop(i)——对象方法:删除索引为i的项,并返回它
print('
删除索引为4的项,并返回它:')
print(arr.pop(4)) # 3 返回值是删除的元素本身
print('pop----------', arr)
# pop---------- array('i', [0, 1, 1, 2, 4, 5, 6, 7, 5, 6, 7, 1, 2, 5, 0, 6, 7, 0])
# array.remove(x)——对象方法:删除第一次出现的元素x
print('
删除第一次出现的元素3:')
arr.remove(1) # 没有报 ValueError
print('remove----------', arr)
# remove---------- array('i', [0, 1, 2, 4, 5, 6, 7, 5, 6, 7, 1, 2, 5, 0, 6, 7, 0])
# array.reverse()——对象方法:反转数组中元素的顺序
print('
将数组arr中元素的顺序反转:')
arr.reverse()
print('reverse----------', arr)
# reverse---------- array('i', [0, 7, 6, 0, 5, 2, 1, 7, 6, 5, 7, 6, 5, 4, 2, 1, 0])
# array.tolist():将数组转换为具有相同元素的列表(list)
print('
将数组arr转换为一个具有相同元素的列表:')
li = arr.tolist()
print('tolist----------', li)
# tolist---------- [0, 7, 6, 0, 5, 2, 1, 7, 6, 5, 7, 6, 5, 4, 2, 1, 0]
小计:这个模块没有自己的排序方法