Python高级数据结构之Array

本文深入探讨了Python中array模块的应用,介绍了如何通过array优化内存使用,对比list的优势,并提供了多种array操作实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章是Python高级数据结构的第二篇,由于之前没有接触过太多的Python版本的数据结构,所以在学习的过程中集百家之长和自己的见解,加以实践,学习Python。 Python中用到tuple的方法,和注意事项都以代码的形式体现,高级之处在与其可以处理特殊场景的大部分数据描述问题。PS:本系列所有代码全部基于Python 3.5,如果有需要参考的请在pyCharm中设置版本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017-4-25 16:38
# @Author  : coderManFans
# @Site    : Python高级数据结构
#            Array:array 模块定义了一个很像list的新对象类型,不同的地方在于限定了这个类型只能有
#           一种数据类型的元素,只能是数字类型或者是字符串类型,或者是对象类型
#           array元素的类型是在创建并使用的时候确定的
#           应用背景:如果你的程序需要优化内存的使用,并且你确定你希望在列表中存储的是同样的数据类型,
#           那么可以使用array模块。使用list也可以,但是list由于维护了每个元素的数据类型,所以占用的内存肯定比array
#           多,但是呢,就效率而言list与array相差无几。
#           注意事项:在使用array进行计算的时候,需要特别注意创建list的操作。例如列表推导式(list comprehension)
#           的时候,会将array整个转换为list,使得存储空间膨胀。可以使用生成器表达式创建新的array
#           Python 本身没有数组这个说法,有的就是list和tuple....
#           array模块用于提供基本数字,字符类型的数组,用于容纳字符号,整形,浮点型等基本类型
#           注意不支持如此字符串数组格式:['asd','2323','asdfad23']
# @File    : arrayDemo.py
# @Software: PyCharm
import array

#1.array的初始化
# 'i':表示为整形
# 'c':表示为单个字符的字符串

arr1 = array.array('i',[1,2,3,4,5,6,6])
print(arr1)
arr2 = array.array(arr1.typecode,(2*x for x in arr1))
print(arr2)
arr3 =array.array('u',['a','b','c'])
print(arr3)

#2.初始化方式2 因为使用array是为了节省空间,所以更倾向于使用in-place操作。
#更高效的方法可以使用enumerate,对于较大的array,这种in-place修改能够比用生成器创建一个
#新的array至少提升15%的速度
arr4 = array.array('i',[1,2,3,4,5])
for i , x in enumerate(arr4):
    arr4[i] = 2*x

print(arr3)

#----------------------------------------
#3. array的操作Api


#3.1 追加操作
arr4.append(3)
print(arr4)

#3.2 在索引index下新增一个元素,原来的值往后移动
arr4.insert(2,23)
arr4.insert(4,2)
print(arr4)

#3.3 返回某个元素在数组中出现的次数
count = arr4.count(2)
print(count)


#3.4 在数组尾部批量新增元素
arr4.extend([2,3,4,4])
print(arr4)


#3.5 返回某个元素第一次出现的索引值
index1 = arr4.index(2)
print(index1)


#3.6 返回数组的长度
len1 = arr4.__len__()
print(len1)
print(len(arr4))


#3.7 从尾部删除一个元素,
val1 = arr4.pop()
print(val1)


#3.8 从指定位置删除一个元素,默认删除最后一个
print(arr4)
val2 = arr4.pop(9)
print(val2)
print(arr4)


#3.9 数组反转
arr4.reverse()
print(arr4)

#3.10 删除第一次出现的元素
arr4.remove(2)
print(arr4)


#3.11 数组转换为list
list1 =arr4.tolist()
print(list1)


#3.12 如果是字符格式可以调用该方法
arr3.tounicode()
print(arr3)


#还有一些其他的方法,但是很少使用,比如
#fromfile() tofile() fromlist() fromstring()
#后面遇到会再次更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值