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就是根据这种机制来查找到对应的“页码”,直接取出数据,所以速度非常快。 字典和列表比较有以下几个特点:

  1. 查找和插入极快,不会随着key的增加而变慢
  2. 随着key的增加,会占用更多的内存

而列表恰恰相反

  1. 查找和插入随着元素的增加而增加
  2. 占用内存少

获取字典中的元素

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')}