Python每天五分钟-数据类型
- 2019 年 12 月 17 日
- 筆記
- 在Python中数据类型与其他语言大同小异,分别有整型(
int
)、浮点型(float
)、布尔型(bool
)、字符串(str
)、空值(None
)。 - 其中整型和浮点型都是数字类型,在Python中还有其他两个数字类型长整型(
long
)、复数(complex
)。 - 此外,Python还提供了字典、列表等, 还允许创建自定义数据类型 。
注意:long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代
整型
整型即整数,Python可以处理任意大小的整数,其中也包括负整数。
浮点型
浮点型也就是小数,浮点数对于很大或很小的数值,计算机会以科学记数法进行存储,把10用e来代替,例:1.23e9=1.23×109或者 0.000012=1.2e-5
字符串
Python中的字符串使用""
或者''
包裹任意字符,比如:'abc'
或"abc"
如果'
也想当成一个字符输出的话可以使用包裹起来"I 'm Sam"
如果字符串内都包含'
和"
可以使用转义字符来标识,例:
'I'm "Sam"!'
n # 表示换行 t # 表示制表符 r'' # 表示默认不需要转义任何字符 # Python可以使用'''...'''来表示多行字符串

提示符会从>>>变成…,这表示你可以接着上一行的代码继续输入,…不是代码的一部分
获取字符串长度
>>>> a='abc' >>>> len(a) 3
替换字符串字符
这里需要注意的是,str是变量,而'love'才是字符串对象。在使用str.replace()时,不会作用在变量str上,str.replace()作用在'love'字符串对象上,并不会改变str变量的指向。我们只需要将str.replace()返回的新的字符串对象赋值给新的变量即可。
str = 'love' print(str.replace('l', 'L')) print(str) # 输出结果 # Love # love ####### str = 'love' strs = str.replace('l', 'L') print(strs) print(str) # 输出结果 # Love # love
布尔型
Python中的布尔型使用True和False来表示,与布尔代数的表示完全一致,需要注意的是大小写的问题,其他语言中首字母可以是小写的,例如:PHP 布尔值可以通过逻辑运算、比较运算得到。需要注意的是,逻辑运算中x and y
,如果x或y为False或0,会返回布尔值False或0,否则它会返回y的值

空值
空值是Python中非常特殊的值,用None
表示,None
不可以理解为0,因为0
是有意义的,而None
是一个特殊的空值。
列表
Python中内置了一种有序集合来存储数据,与php中的数组非常相似。 列表中的元素值可以是任意数据类型。
比如列出员工的姓名
>>>> staff=['李某','张某','王某','胡某'] >>>> staff ['李某','张某','王某','胡某']
变量staff就是一个列表,可以随时添加或删除列表中的元素
>>>> staff.append(567) >>>> staff ['李某','张某','王某','胡某',567]
也可以指定下标进行添加
>>>> staff.insert(2,'周某') >>>> staff ['李某','张某','周某','王某','胡某',567]
删除可以使用pop(),默认从末尾进行删除
>>>> staff.pop() >>>> staff ['李某','张某','周某','王某','胡某']
也可以指定下标进行删除
>>>> staff.pop(3) >>>> staff ['李某','张某','周某','胡某']
获取列表中的个数
>>>> len(staff) 4
对列表进行排序
l = [73, 55, 12, 89, 1002] l.sort() print(l) # 输出结果 # [12, 55, 73, 89, 1002]
获取列表中的某个元素值,可以通过下标进行获取下标默认从0开始
>>>> staff[0] '李某'
快速获取列表最后一个元素
>>>> staff[-1] '胡某'
Python中获取元素可以进行倒叙获取
>>>> staff[-2] '周某' >>>> staff[-3] '张某' >>>> staff[-4] '李某'
获取元素是如果下标超出范围Python会报IndexError: list index out of range的错误
给列表已设定的元素重新赋值
>>>> staff[1]=[True,89] >>>> staff ['李某',[True,89],'周某','胡某']
Python中使用enumerate()函数获取列表下标
l = [1, 2, 3] for i,value in enumerate(l): print(i, value) # 输出结果 # 0 1 # 1 2 # 2 3
元组
元祖与列表非常相似,唯一不同的是元祖一旦定义,元祖中的元素不可修改,并且元祖也没有增加和删除元素的操作,获取元素等操作与列表一致。
>>>> lover=('周某','杨某') >>>> lover ('周某','杨某')
如果进行修改元祖中的元素Python会报TypeError: 'tuple' object does not support item assignment错误 如果要定义一个元素的元祖,像下面这么定义的话,该变量就不是一个元祖了,因为Python中()可以代表数学公式中的小括号,又可以代表元祖,优先以数学公式的小括号进行运算
>>>> field=('abc') >>>> field 'abc'
field是字符串
正确的定义
>>>> field=('abc',) >>>> field ('abc',)
案例:
>>>> field=('abc',['a','b']) >>>> field[1][0]=2 >>>> field[1][1]=3 >>>> field ('abc',[2,3])
上面的案例定义了元祖中第二个元素为['a','b']下面针对这个元素进行了修改,但是正常输出了,为什么呢? 从输出来看,元祖的内容确实变化了,可是变化的并不是元祖的元素,而是元祖中的列表,列表中的元素是可以进行增加删除修改的
字典
在Python中内置了字典(dict)数据类型,使用键和值(key:value)来存储,和php中的关联数组类似,更像是一个json字符串。
同样和其他语言也一致,key必须是唯一的,value可重复,value可以是任意数据类型。
dict = {'key1':'value1', 'key2':123, 'key3':[1,2,3]} print(dict); # 输出结果 # {'key1': 'value1', 'key2': 123, 'key3': [1, 2, 3]}
字典的提点
字典的查找速度特别快,为什么?举个“栗子”来说明: 就像我们差字典,知道首字符,找到对应的词后,查看页码就可以了。 dict就是根据这种机制来查找到对应的“页码”,直接取出数据,所以速度非常快。 字典和列表比较有以下几个特点:
- 查找和插入极快,不会随着key的增加而变慢
- 随着key的增加,会占用更多的内存
而列表恰恰相反
- 查找和插入随着元素的增加而增加
- 占用内存少
获取字典中的元素
dict = {'key1':'value1', 'key2':123, 'key3':[1,2,3]} print(dict['key1']); print(dict['key3']); # 输出结果 # value1 # [1, 2, 3]
同样key如果不存在就会报错。
Traceback (most recent call last): File "dict.py", line 3, in print(dict['key4']); KeyError: 'key4'
可以通过下面这两种方式来避免。
# 方式1. dict = {'key1':'value1', 'key2':123, 'key3':[1,2,3]} print('key4' in dict) # 输出结果 # False # 方式2. 通过字典的get()方法,如果不存在会返回None,同时也可以指定一个值 print(dict.get('key4')) # 输出结果 # None print(dict.get('key4', 0)) # 输出结果 # 0
删除字典中的元素
字典提供了pop()方法,可以用来删除字典中的元素
dict = {'key1':'value1', 'key2':123, 'key3':[1,2,3]} dict.pop('key1') print(dict) # 输出结果 # {'key2': 123, 'key3': [1, 2, 3]}
修改字典中的元素
dict = {'key1':'value1', 'key2':123, 'key3':[1,2,3]} dict['key3'] = True print(dict) # 输出结果 # {'key1': 'value1', 'key2': 123, 'key3': True}
增加字典中的元素
dict = {'key1':'value1', 'key2':123, 'key3':[1,2,3]} dict['key4'] = True print(dict) # 输出结果 # {'key1': 'value1', 'key2': 123, 'key3': [1, 2, 3], 'key4': True}
集合
集合和字典非常相似,但是集合不存储value,只存储key,同样key也不可重复。
创建集合
要创建一个集合需要提供一个列表。并且必须是一维的列表
l = [1, 2, 3] s = set(l) print(s) # 输出结果 # {1, 2, 3} # 如果列表中有重复的值,会被剔除掉 l = [1, 2, 3, 3, 2, 1] s = set(l) print(s) # 输出结果 # {1, 2, 3} # 如果列表是[1, 2, 3, 3, 2, 'ddd', True, [1, 2, 3, 3, 2, 'ddd']] # 回报以下错误 Traceback (most recent call last): File "set.py", line 2, in s = set(l) TypeError: unhashable type: 'list'
新增集合元素
集合提供了add()方法来新增集合元素
l = [1, 2, 3, 3, 2, 'ddd', True, (1, 2, 3, 3, 2, 'ddd')] s = set(l) s.add('abc') print(s) # 输出结果 # {1, 2, 3, 'ddd', (1, 2, 3, 3, 2, 'ddd'), 'abc'}
删除集合元素
集合提供了remove()方法来新增集合元素
l = [1, 2, 3, 3, 2, 'ddd', True, (1, 2, 3, 3, 2, 'ddd')] s = set(l) s.remove(1) print(s) # 输出结果 # {2, 3, 'ddd', (1, 2, 3, 3, 2, 'ddd')}