本章是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()
#后面遇到会再次更新