Python的数据类型
在现实中,计算机处理的远不止数值,还要处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。
在Python中,能够直接处理的数据类型有以下几种:数值型、字符串型、列表型、元组型、字典型。
数值类型
即是数字类型,又细分为:整型,浮点型,长整型,复数型.
整型
整数类型的范围是2**32,其中包含正数和负数(2的31次方个正和2的31次方的个负数,所以它的范围是-2147483648 ——— 214748364。
PS:查看一个数据的数据类型
1. 使用type(数据)方法
2. dir():获取对象的方法
3.PyCharm:按住command点击类型,即可查看源码。从源码中查看对象类型的方法。
In [1]: a=1
In [2]: type(a)
Out[2]: int # int表示为整型
In [18]: type(2/1)
Out[18]: int
markdown未熟悉,见谅.
浮点型
浮点类型就是带小数点的,多余的位数会被四舍五入
整数和浮点数在计算机内部存储的方式是完全不同的,整数运算永远是精确的,除法也是精确的,而浮点数运算则可能会有四舍五入的误差。
长整型
用l或L表示,当我们赋值的时候使用l可以把变量赋值为长整型,注意在Python3中已经没有长整型!
复数型
用j表示,当我们赋值的时候使用j可以把变量赋值为复数型,python对复数提供内嵌支持。(其他大部分软件没有)
复数一般用于科学计算,我们日常一般不会使用,这里知道即可。
In [20]: type(123j)
Out[20]: complex # 表示复数类型
字符型
字符串是以单引号’或双引号"括起来的任意文本,比如’abc’,“xyz"等等。
请注意,’'或”“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。
如果’本身也是一个字符,那就可以用”"括起来,比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符。
有三种方法定义字符串:单引号,双引号,三引号。
请注意,python里面单双引号都可以括字符串和字符,与C语言不一样
最后,三重括号(如’’’ ‘’’)可以表示注释!!!
字符串基本操作
索引
就是数组下标
In [3]: a='1234567'
In [4]: a[0] -->#下标从0开始,0表示第一个数
Out[4]: '1'
In [5]: a[3] -->#表示第四个数
Out[5]: '4'
补充:也可以从后面开始算,[-1]是最后一个
切片
就是截取变量,类似于数学的区间
In [14]: a='abcd'
In [15]: a[0:2]
Out[15]: 'ab'#从第0个开始截取2个字符,其中0可以省略
In [14]: a='abcd'
In [17]: a[1:]
Out[17]: 'bcd'
#从1开始截取到最后,省略的位置就当是到尽头的
字符串的内置操作
字符串是Python中的主要数据类型,其内置了非常多的方法,直接就可以在对字符串进行操作,主要方法如下:
capitalize
# 功能:首字母大写
# 调用方式:string.capitalize()
# 例:
name = 'hello' name.capitalize()
#结果:
'Hello'
用法: string.casefold()
用法:string.lower()
用法:str.center(width,filechar=None)
用法:str.counter(sub,start=None,end=None)
用法:str.startswith(suffix,start=None,end=None)
用法:str.endswith(suffix,start=None,end=None)
用法:str.expendtabs(20)
用法:str. find(sub,start=None,end=None)
用法:str.format()
等等等,作用基本上看英文就懂了~
序列类型
字符串、列表和元组都是序列的一种,序列的两个主要特点是索引操作符和切片操作符
索引操作符让我们可以从序列中抓取要给特定的项目
切片操作符让我们能够获取序列的一个切片,即一部分操作(这个就是上述的字符串一个总结)
序列类型的基本操作
字符串、列表、元组的索引和切片又有些许不同
用法:len() 计算字符串长度
用法:+ 连接序列
用法:* 重复序列
用法:in 在序列中查找元素是否存在
用法:max(),min() 求最大最小值
用法:cmp() 比较序列是否相等,从左开始向右比对,前>后,返回1,前<后,返回-1,前=后,返回0,如果相等,则继续向右比对
元组(tuple)
元组tip:
元组可以存储一系列的值,使用()圆括号来定义。
被使用的元组的值不可以被改变,但是被使用前(定义时)可以任意修改.
元组也用来接受函数返回值.
支持元组内嵌套引用(包括全部引用和部分引用)
定义元组
t=(1,)#这就是一个元组了,类型是tuple
a=(t,1)#嵌套引用全部
b=(t[1],t,1)#嵌套引用部分
以上部分完全体现了python的原理:全部TM都是对象,都是指针!~
元组基本操作
支持操作如下:
1,拆分
a=('31','1800','26','2634')
first,second,_,last=a
##元组如果有n个元素,必须用1或n个定义来分割,我们可以用_,来获取不需要的数据,但是萝卜坑还是要填上的.
first
>>>31
2.查看,索引,统计出现次数,帮助
tab或者使用 dir(元组名)来查看元素
元组名.index(被索引元素,索引上限,索引下限)
##上下限如果省略则默认全元组索引
如果有直接return 下标位置(优先报第一个) 没有这个元素就报错
元组名.count(被统计元素) 有就返回次数,不存在就返回0
help(py万物)
查看使用方法和帮助
列表(list)
列表(类型为 list)是处理一组有序项目的数据结构,即可以在列表中存储一个序列的项目。
列表是可变类型的数据,创建列表使用[]中括号。
列表的值是可以更改的.
列表可以包含变量,元组,列表等等.
列表基本操作
基本上面有的操作,列表都是一样.以下是部分操作
(一级或多级)列表名.append(追加元素元组) 列表末尾追加
In : b=[] # 定义一个空列表
In : a=[b,'123','456']
In : a
Out: [[], '123', '456']
In : a[0].append("linux") # 向签到的b(空列表)中插入数据
In : a
Out: [['linux'], '123', '456']
列表名.remove(删除元素) 列表名.del(删除元素 或 变量索引) 列表内删除
列表名[索引]=KKK 支持直接修改
列表好像有个迭代相关操作,未完全熟悉,先占坑.
字典类型
使用{}大括号定义,是Python中唯一的映射类型(哈希表)
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。from 百度百科
字典索引不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值 称为“键-值”对。
字典对象是可变的,但是字典的键(key)必须使用不可变对象,一个字典中可以使用不同类型的key。
像元组,字符串等都是不可变的,都可以作为key。
而列表是可变的,无法作为key。
key是唯一的
字典操作
字典操作有点多,以下粘贴别人的总结,其它方法可以用dir(dict)查看
- keys() 获取字典的key
- values() 获取字典中所有的values
- items() 把字典转换成列表
- get() 如果字典中有该key,则返回key值,如果没有,则返回空,也可以自己定义返回值
- dic.get(‘Name’,‘python’),如果存在name,则返回values,否则返回Python
- has_key(‘key’) 判断key的是否存在,存在返回True,否则返回False
- dic1 = dic.copy() 拷贝字典到一个新的字典中去
- clear() 清除字典中的元素
- pop() 删除一个key,同时打印该key的value,如果key不存在,则返回keyerror,或者指定返回值 dic.pop(‘name’,True)
- update() 把一个字典更新(添加)到另一个字典中
- fromkeys(s,value) 把序列s,作为字典的key,如果不给value,则默认是none,如果指定value,那么所有key对应的值都为value
以上是常用操作,以下是某些方法举例:
for循环字典
- 遍历字典的key-value(键值对)
其实dictionary相当于一栋楼,key就相当于门牌,value就是这间房子里面的租客.
for key,value indictionary.items():
##for遍历字典中具体的key和value,使用字典对象的items()方法获取字典的“键值对”列表。
print(key,value)
- 遍历字典的项(键值对)
for item in dictionary.items():
##for遍历可以获取字典中的全部“键值对”,使用字典对象的items()方法获取字典的“键值对”列表。
print(item)
- 遍历字典的value(值)或者 key (键)
for value '''key''' indictionary.values '''keys''' ():
##通过for循环遍历可以获取字典中的具体的value(值)或者 key (键)。
print(value'''key''')
字典基本定义格式
dictionary={‘key1’:‘V1’,‘key2’:‘V2’,‘key3’:‘V3’,}##注意逗号就好~
类型转换
Python内支持数据类型(瞎几把)互相转换,这个实现需要应用工厂函数:
str、list、dict、tuple等等。
- str() : 用于把整型、浮点型等转换为字符串
- list() : 用于把一个可迭代对象转换为列表
- dict() : 把一个可迭代对象(每次迭代返回两个数据),转换为字典
- tuple():把一个可迭代对象转换为元组
运算符
运算符:赋值运算符、算数运算符、关系运算符、逻辑运算符
表达式: 用运算符把数据连接起来的一种式子
PS:
支持各种按位运算,左移右移按位取反各种_过于底层,不太适合python
赋值
=表示赋值,其他的参考C语言,基本一样,但是Python下不用指定变量的类型,它会自动根据你赋值的类型来定,使用type(x) 来查看变量的类型。
算数
** 表示乘方 3**8 表示3的8次方(本校class viva也支持这种输入)
// 结果取整 如果结果是1.99,最后输出就是1
其他参考C语言,发挥想象力~~~~~
逻辑
返回值是布尔值:true 和 false
三种逻辑 and or not
关系
== >= !=这些,参考C语言吧
特殊符号
in/not in 检测一个元素是否在一个序列中
is /is not 测试两边的统一性(包括数据和数据类型)