一、数据类型
一、array(数组)
参考:https://zhuanlan.zhihu.com/p/50332730
python本身并没有数组类型,但是他的Numpy库中有数组类型。
array的创建
Numpy数组创建常用的两种方式如下:
a=np.array((1,2,3))#参数是tuple
b=np.array([6,7,8])#参数是list
c=np.array([[1,2,3],[4,5,6]])#参数是二维list
arr1=np.arange(1,10,1)
arr2=np.linspace(1,10,10)
np.arange(a,b,c)表示产生从a-b不包括b,间隔为c的一个array,数据类型默认是int32。但是linspace(a,b,c)表示的是把a-b平均分成c分,它包括b。
二、list(列表)
python中的list是python的内置数据类型,list中的数据类不必相同的。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据。因此list的缺点是内存需要同时保存指针和数据,增加了存储和cpu的消耗。例如list1=[1,2,3,‘a’]需要4个指针和四个数据。
list和array主要的区别是:
- list中存储的数据类型不必完全相同,例如arr = [“one”,“two”,3]。array则需要存储相同的数据类型,因此在计算的通用性方面list要优于array。
- Numpy专门针对封装的array在操作和运算方面进行了设计,因此存储效率和输入输出性能要优于list
list创建
lst = []
lst = ["one","two",3]
lst = list()
list查询
arr = ['张三','李四','王五','赵六']
根据index查找数值
arr[0] #通过索引值下标查询,0 代表第一个,等于 '张三'
arr[-1] #从右往左查询,-1 代表最后一个,以此类推,等于 '赵六'
根据数值查找index
arr.index('张三') #返回出下标 0
arr.index('李四') #返回出下标 1
注:如果不同index的数值相同,只会返回找的第一个index,可以用count方法统计相同数值的索引数
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr.index('5') #返回出来的值等于 4 ,之后他就不会往下继续匹配了,默认匹配到第一个值后就会停止,不会往下走了
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr.counr('1') #返回出来的值是 3 ,代表这个数组中有三个相同的字符串 '1'
list切片
切片其实就是通过下标自定义去除从多少到多少的元素,左闭右开
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr[0:5] #返回的其实就是['1','2','3','4'] 0 代表的就是第一个,5 代表的就是第五个前面的一个,默认都是顾头不顾尾。
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr[-5:-1] #得出结果为:['9', '1', '6', '7'],切片必须从左往右切,所以是 [-5:-1]
arr[:-1] #得出的结果是整个数组,第一个默认不写的话取之是从第一个开始取
arr[0:] #得出的结果是整个数组,最后一个默认不写的话取之是倒数第一个 -1
arr[:] #得出的结果是整个数组,第一个默认不写代表第一个,最后一个默认不写代表最后一个
arr = ['1','2','3','4','5','6','7','8','9','1','2','3','4','5','6','7','8','9','1','6','7','8']
arr[0:-1:2] #这样就得出了我想要的结果:['1', '3', '5', '7', '9', '2', '4', '6', '8', '1', '7']
arr[:-1:2] #这样就得出了我想要的结果:['1', '3', '5', '7', '9', '2', '4', '6', '8', '1', '7']
arr[::2] #这样就得出了我想要的结果:['1', '3', '5', '7', '9', '2', '4', '6', '8', '1', '7']
三、字典
https://www.runoob.com/python/python-dictionary.html
新建
#动态分配
>>> d={}
>>> d['name']='Allen'
>>> d['age']=21
>>> d['gender']='male'
>>> d
{'age': 21, 'name': 'Allen', 'gender': 'male'}
#传统创建方式
>>> d={'name':'Allen','age':21,'gender':'male'}
>>> d
{'age': 21, 'name': 'Allen', 'gender': 'male'}
#借助相关方法,例如collections方法里的counter
#首先引入该方法
from collections import Counter
#对列表作用
list_01 = [1,9,9,5,0,8,0,9] #GNZ48-陈珂生日
print(Counter(list_01)) #Counter({9: 3, 0: 2, 1: 1, 5: 1, 8: 1})
#对字符串作用
temp = Counter('abcdeabcdabcaba')
print(temp) #Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
#以上其实是两种使用方法,一种是直接用,一种是实例化以后使用,如果要频繁调用的话,显然后一种更简洁
删改查
#删
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del tinydict['Name'] # 删除键是'Name'的条目
tinydict.clear() # 清空字典所有条目
#改
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新
tinydict['School'] = "RUNOOB" # 添加
#查
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
特殊方法
cmp(dict1, dict2) 比较两个字典元素。
len(dict) 计算字典元素个数,即键的总数。
**str(dict)**输出字典可打印的字符串表示。
**type(variable)**返回输入的变量类型,如果变量是字典就返回字典类型。