Python每天五分钟-数据类型

  • 在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.23x109或者 0.000012=1.2e-5


字符串


Python中的字符串使用""或者''包裹任意字符,比如:'abc'"abc"如果'也想当成一个字符输出的话可以使用包裹起来"I 'm Sam"
如果字符串内都包含'"可以使用\转义字符来标识,例:'I\'m \"Sam\"!'

\n # 表示换行
\t # 表示制表符
r'' # 表示默认不需要转义任何字符
# Python可以使用'''...'''来表示多行字符串

blockchain
提示符会从>>>变成...,这表示你可以接着上一行的代码继续输入,...不是代码的一部分

获取字符串长度

>>>> 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的值
blockchain


空值


空值是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')}
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注