前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【测试开发】python系列教程:array库

【测试开发】python系列教程:array库

作者头像
雷子
发布2023-08-21 19:54:24
1440
发布2023-08-21 19:54:24
举报
文章被收录于专栏:雷子说测试开发

上一篇

【测试开发】python系列教程:decimal库

这次我们分享python的array库


array 模块定义了一种对象类型,可以紧凑的表示以 字符、整数、浮点数 等基本类型为元素组成的数组。array 模块中定义的数组属于序列类型,其行为也与列表类型非常相似,但是数组中的元素的数据类型是受到限制的,只能设置在初始化时指定的某一种类型。

array 模块在使用时,需要先实例化一个数组对象,然后再进行下一步操作:

代码语言:javascript
复制
array.array(typecode[, initializer])
'''
参数:
    typecode: 指定当前数组所能接受的元素数据类型
    initializer: 可选参数, 数组初始化时添加的元素, 必须是可迭代对象, 元素的数据类型受参数 typecode 的限制
'''

typecode 参数的值是一个字符,这个字符被称为类型码,其代表一种类型限制,所有的类型码可以使用 array.typecodes 查看:

代码语言:javascript
复制
import array

print(array.typecodes)

结果:

在上述的例子中,返回值中的每个字符都是一个类型码,那么这些类型码都是什么意思呢?

接下来就可以初始化一个数组了:

代码语言:javascript
复制
test = array.array('u', 'abc')
print(test)

结果:

初始化的元素类型一定要和设置的类型码一致,否则将报错:

代码语言:javascript
复制
import array

test = array.array('b', 'abc')
print(test)

结果:

array 模块的大多数内容都在初始化后的数组对象上展开的,那么下面将根据功能进行分组介绍。

属性

  • array.typecode: 获取数组的类型码
  • array.itemsize: 获取在内部表示中一个元素的字节长度
代码语言:javascript
复制
import array

test = array.array('u', 'ABC')
print("类型")
print(test.typecode)
print("一个元素的字节长度")
print(test.itemsize)

结果

添加

添加功能比较统一的一点就是都没有返回值,直接作用于数组本身。

  • array.append(x)

添加一个值为 x 的新项到数组末尾。

  • array.extend(iterable)

将来自 iterable 的项添加到数组末尾。如果 iterable 是另一个数组,它必须具有 完全 相同的类型码;否则将引发 TypeError。如果 iterable 不是一个数组,则它必须为可迭代对象并且其元素必须为可添加到数组的适当类型。

  • array.fromlist(list)

添加来自 list 的项。这等价于 for x in list: a.append(x),区别在于如果发生类型错误,数组将不会被改变。

  • array.fromunicode(s)
  • 使用来自给定 Unicode 字符串的数组扩展数组。数组必须是类型为 'u' 的数组;否则将引发 ValueError。请使用 array.frombytes(unicodestring.encode(enc)) 来将 Unicode 数据添加到其他类型的数组。

array.insert(i, x)

将值 x 作为新项插入数组的 i 位置之前。负值将被视为相对于数组末尾的位置。

代码语言:javascript
复制
import array

test = array.array('u', 'H')

'''append()'''
test.append('e')
print('append')
print(test)

'''extend()'''
test.extend(['C', 'l'])
print('extend')
print(test)

'''fromlist()'''
test.fromlist(['E', 'l'])
print('fromlist')
print(test)

'''fromunicode()'''
test.fromunicode('00')
print('fromunicode')
print(test)
'''insert()'''
test.insert(6, 'H')
print("insert")

print(test)

结果展示

代码语言:javascript
复制
append
array('u', 'He')
extend
array('u', 'HeCl')
fromlist
array('u', 'HeClEl')
fromunicode
array('u', 'HeClEl00')
insert
array('u', 'HeClElH00')

统计 and 获取

  • array.count(x)

返回 x 在数组中的出现次数。

  • array.index(x[, start[, stop]])

返回最小的 i 使得 i 为数组中首次出现的 x 的索引号。指定可选参数 startstop 以便在数组的一个子部分内部搜索 x

  • array.pop([i])

从数组中移除序号为 i 的项并将其返回。可选参数值默认为 -1,因此默认将移除并返回末尾项。

代码语言:javascript
复制
import array

test = array.array('u', 'ABCABC')

'''count()'''
print("count   A")
print(test.count('A'))


'''index()'''
print("index B")
print(test.index('B'))

'''pop()'''
print("pop c")
print(test.pop())
print("pop c array")
print(test)
代码语言:javascript
复制
结果打印
代码语言:javascript
复制
count   A
2
index B
1
pop c
C
pop c array
array('u', 'ABCAB')

转换

  • array.tolist()

将数组转换为包含相同项的普通列表。

  • array.tounicode()

将数组转换为一个 Unicode 字符串。数组必须是类型为 'u' 的数组;否则将引发 ValueError。请使用 array.tobytes().decode(enc) 来从其他类型的数组生成 Unicode 字符串。

代码语言:javascript
复制
test = array.array('u', 'ABCDEFG')
'''tolist()'''
print(test.tolist())

'''tounicode()'''
print(test.tounicode())

结果打印

代码语言:javascript
复制
['A', 'B', 'C', 'D', 'E', 'F', 'G']
ABCDEFG

其他

  • array.buffer_info()

返回一个元组 (address, length) 以给出用于存放数组内容的缓冲区元素的当前内存地址和长度。

  • array.remove(x)

从数组中移除首次出现的 x

  • array.reverse()

反转数组中各项的顺序。

代码语言:javascript
复制
import array

test = array.array('u', 'ABCDEFGHIJK')

'''buffer_info()'''
print(test.buffer_info())

'''remove()'''
test.remove('C')
print(test)

'''reverse()'''
test.reverse()
print(test)
代码语言:javascript
复制

结果打印:

代码语言:javascript
复制
(140426641548848, 11)
array('u', 'ABDEFGHIJK')
array('u', 'KJIHGFEDBA')

目前这个,实际用的没有那么多,可以做个了解,也可以找到自己的使用的方式。

参考资料:

https://docs.python.org/zh-cn/3/library/array.html#array.array

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 属性
  • 结果
  • 添加
  • 统计 and 获取
  • 转换
  • 其他
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档