python的变量以及常用的数据类型

好久不见. 提交于 2019-11-27 09:32:19

有关python的版本和安装以及概念特点可以参考上篇博文,python语言基础

此博文主要讨论问题如下:
一、python的变量
二、python常用的数据类型

一、什么是python的变量?

变量是计算机内存的一块区域,变量可以存储任何值,而且值可以改变。变量名由字母、数字和下划线组成。需要注意的是,不能使用python的关键字,英文大小写字母敏感,第1个字符必须是字母或下划线,不能是数字,示例代码如下:

>>> x=1
>>> _x=2
>>> print(x)
1
>>> print(_x)
2

x和_x都是合法的变量名,print()是输出函数,能够输出变量的值,也可以不使用小括号。

python中的变量不需要声明,变量的赋值操作即是变量声明和定义的过程,如_x=2即是声明和定义的过程。还可以给几个变量同时赋值,示例代码如下:

>>> a,b,c=4,5,6
>>> print (a)
4
>>> print(b,c)
5 6

a,b,c=4,5,6同时给3个变量进行了赋值操作,简化了多个变量赋值的代码。

二、python常用的数据类型有哪些?

python内置的数据类型有数字、字符串、元组、列表和字典

1、数字

数字类型包括整~型、浮点型、布尔型等,声明时由python内置的基本数据类型来管理变量,在程序的后台实现数值与类型的关联,以及转换等操作。根据变量的值自动判断变量的类型,程序员不需要关心变量空间是什么类型,只要知道创建的变量存放了一个数,程序只是对这个数值进行操作。

1)整型和浮点型
整数使用整~型表示,有小数位使用浮点型表示,示例代码如下:

>>> w=123
>>> print(w)
123
>>> w=5.21
>>> print(w)
5.21

以上代码首先定义了变量w=123,此时的w值是整数,w即使整型变量,当w=5.21时,w又成为了浮点型变量,由此可以看出,变量的类型是能改变的,这点与Java、C#语言等是有区别的。这是因为当python给已经存在
的变量再次赋值时,实际上是创建了一个新的变量,即使变量名相同,但标识并不相同,变量的标识可以使用id函数输出。

>>> w=123
>>> print(id(w))
140709308982112
>>> 
>>> w=5.21
>>> print(id(w))
2193072831584

以上代码都是对变量x的标识进行打印,赋值前后的标识并不相同。

2)布尔类型
布尔型用于逻辑运算,有两个值True、False,表示真和假。示例代码如下:

>>> 10>50
False
>>> 
>>> 30>15
True

3)python运算符
python中使用的算术运算符和数学运算中使用的符号基本相同,由+、-、*、/、%、//、 *****(加、减、乘、除、取余、整余、次方)和小括号组成运算顺序也是先乘除后加减,小括号优先。示例代码如下:

>>> x,y=10,2
>>> print(x+y,x-y,x*y,x/y)
12 8 20 5.0
>>> print (2+4*8)
34
>>> print((6+5)*4)
44

下面两个算术运算符是%和****(求模运算和求幂运算),求模运算取余数,求幂是计算累乘的结果,也就是次方,示例代码如下:

>>> 8%5
3
>>> 8%4
0
>>> 2**2
4
>>> 6**3
216
>>> 2**4
16

2、字符串

python中的字符串类型是一组包含数字、字母和符号的集合,作为一个整体使用。

1)字符串使用
python中有3种表示字符串的方式,单引号、双引号、三引号,示例代码如下:

>>> name='王五'
>>> address="长安街"
>>> content='''欢迎来到北京'''
>>> print (name)
王五
>>> print(address)
长安街
>>> print(content)
欢迎来到北京

变量name使用单引号,变量address使用双引号,变量content使用三引号,他们都是合法的python字符串类型。需要注意的是,单引号和双引号的作用是一样的,可以根据习惯使用,但定义多行文字时,必须要使用三引号。

常用的转义字符如下图:
python的变量以及常用的数据类型

2)字符串的其他用法
python的字符串可以进行乘法的操作,可以用一个整型数字和字符串相乘,如用数字3乘字符串“a”,结果是字符串“aaa”,相同于字符串“a”连接了3遍,示例代码如下:

>>> print(3*'a')
aaa
>>> print (5*'b')
bbbbb

3、列表

列表(list)是python中非常重要的数据类型,通常作为函数的返回类型。由一组元素组成,列表可以实现添加、删除和查找操作,元素值可以被修改。

1)列表的定义
列表是python内置的一种数据结构,由中括号定义,元素以逗号分开,语法如下:
python的变量以及常用的数据类型

2)列表的取值
列表中的数据是有序的,按定义时的顺序排好,可以单独取出某一位置元素的数值,语法如下:
python的变量以及常用的数据类型
示例代码如下:

>>> num=['111','222','333']
>>> print(num[0])
111
>>> print(num[1])
222
>>> print(num[2])
333

定义了列表num,存储了3个字符串顺序是‘111’、‘222’、‘333’,取值时用小括号列表名num加上中括号,数字表示索引位置,需要注意位置是由0开始依次递增。

  • 可以获取列表知道范围的一组元素,语法如下:
    python的变量以及常用的数据类型
    可以输出起始位置到终止位置前的元素,不包括终止位置,示例代码如下:
    >>> num=['111','222','333','444']
    >>> print(num[0:1])
    ['111']
    >>> 
    >>> print(num[0:3])
    ['111', '222', '333']
    >>> print(num[1:2])
    ['222']
    >>> 
    >>> print(num[2:])
    ['333', '444']

    [0:1]表示由索引0开始,索引位置1之前的元素,所有只能取到第1个元素,[0:3]可以取到索引3之前的元素,即列表中第1、2、3个元素,其他的与此相同。

3)修改列表元素值
可以修改指定位置的列表元素值,语法如下:
python的变量以及常用的数据类型
示例代码如下:

>>> num=['111','222','333','444']
>>> num[0]='001'        #修改
>>> print(num)
['001', '222', '333', '444']

定义列表时,索引位置0的元素是“111”,修改它的值为“001”后,索引位置0元素变为“001”。

4)添加列表元素
可以把一个元素添加到列表的最后,语法如下:
python的变量以及常用的数据类型

示例代码如下:

>>> num=['111','222','333','444']
>>> print (num)
['111', '222', '333', '444']
>>> num.append('555')       #末尾添加新元素
>>> print (num)
['111', '222', '333', '444', '555']

使用append(’555‘)后,“555”被添加到列表的末尾。

  • 在列表指定位置前插入新的元素,语法如下:
    python的变量以及常用的数据类型
    示例代码如下:
    >>> num=['111','222','333','444']
    >>> num.insert(1,'001')
    >>> print(num)
    ['111', '001', '222', '333', '444']

    语句insert(1,’001‘)的作用是在索引位置1前插入’001‘,索引位置1的当前元素是’222‘,’001‘插入到它的前面。

5)删除列表元素
可以删除列表指定索引位置的元素,语法如下:
python的变量以及常用的数据类型
示例代码如下:

>>> num=['111','222','333']
>>> del (num[1])
>>> print(num)
['111', '333']

使用del删除索引为1的元素’222‘后,输出列表num中已经不存在’222‘元素。

6)查找列表元素
使用in关键字可以查找列表中是否存在指定的数值,语法如下:
元素值 in 列表名
返回布尔类型True或False
示例代码如下:

>>> num=['111','222','333']
>>> ('111')in num
True
>>> ('444')in num
False

字符串’111‘在列表中存在,返回True;字符串’444‘在列表中不存在,返回False。

7)合并列表
多个列表可以使用加号进行合并,示例代码如下:

>>> num1=['111','222']
>>> num2=['333','444']
>>> numAll=(num1+num2)
>>> print(numAll)
['111', '222', '333', '444']
>>> numAll=(num2+num1)
>>> print(numAll)
['333', '444', '111', '222']

定义了两个列表num1和num2,使用加号进行合并操作时,加号后面的列表元素会追加到前面列表的后面。

8)重复列表
使用星号可以对列表进行重复操作,与单独字符串乘法操作相似,示例代码如下:

>>> num1=['111','222']
>>> num=(num1*5)
>>> print(num)
['111', '222', '111', '222', '111', '222', '111', '222', '111', '222']

4、元组

元组(tuple)和列表类似,也是python的一种数据结构,由不同的元素组成,每个元素可以存储不同类型的数据,如字符串、数字、甚至元组。但元组是不可以修改的,即元组创建后不能做任何的修改操作,元组通常表示一行数据,而元组中的元素表示不同的数据项。

1)元组的创建
元组由关键字小括号定义,一旦创建后就不能修改元组的内容,定义的语法如下:
python的变量以及常用的数据类型
如下修改柱状图的代码,加入元组的定义,示例代码如下:

>>>import matplotlib.pyplot as plt
>>> x=(1,9)            #元组
>>> height_all=(6,10)     #元组
>>> width_all=4
>>> title=("cylinder")
>>> plt.bar(x=(1,9),height=(6,10),width=(4))
>>> plt.title(title)
>>> plt.show()

这段代码依然可以正常运行,与使用列表并没有区别。元组与列表最大的不同是它是写保护的,创建后不能做任何的修改。
python的变量以及常用的数据类型

python的变量以及常用的数据类型
在使用时元组与列表区别并不大,那么为什么要使用元组呢?主要是因为元组是不可变的,操作速度比列表快,而且因为它不可以修改,数据要更加安全,所以要根据实际情况决定是使用元组还是列表,使程序更加高效合理。

2)元组的操作
元组也可对其元素执行一系列的操作。

  • 元组具有不可变性,所以相比列表的操作要少,其中取值操作与列表是完全相同的,示例代码如下:

    >>> num=('111','222','333')
    >>> print (num[0])
    111
    >>> print (num[1])
    222

    与列表的取值操作完全相同,都是使用方括号作为关键字取值。

  • 元素不允许删除元组中的元素值,但是可以删除整个元组,语法如下:
    python的变量以及常用的数据类型
    示例代码如下:

    >>> num=('111','222','333','444')
    >>> del (num[0])              #删除元素,报错
    Traceback (most recent call last):
    File "<pyshell#219>", line 1, in <module>
    del (num[0])
    TypeError: 'tuple' object doesn't support item deletion
    >>> print (num)
    ('111', '222', '333', '444')
    >>> del (num)              #删除元组后元组不存在,报错
    >>> print (num)
    Traceback (most recent call last):
    File "<pyshell#222>", line 1, in <module>
    print (num)
    NameError: name 'num' is not defined
    >>> 

    定义元组num后,删除某一个元素程序报错。删除整个元组后,在想使用这个元组,编译器会报未定义变量的错误。

  • 元组和列表可以做互相转换操作,元组转换为列表的语法如下:
    python的变量以及常用的数据类型
    示例代码如下:
    >>> num=('111','222','333','444')      #元组
    >>> listNum =list(num)                  #转换为列表
    >>> print (listNum)
    ['111', '222', '333', '444']
    >>> (listNum[0])='001'                 #修改列表
    >>> print( listNum)
    ['001', '222', '333', '444']
    >>> print (type(num))           #输出元组类型
    <class 'tuple'>
    >>> print (type(listNum))       #输出列表类型
    <class 'list'>

    这段代码首先定义了元组num,然后把它转换为列表listNum,对列表listNum可以做修改元素的操作,使用type()函数输出了元组的列表的类型。

5、字典

字典(dict)是python中重要的数据类型,字典是由“键-值”对组成的集合,字典中的值通过键来引用。

1)字典的创建
字典的每个元素是由“键-值”对(key-value)组成的,键值之间使用冒号分隔,“键-值”对之间用逗号隔开,并且被包含在一对花括号中。键是唯一的,不能存在多个,且它的值是无序的,键可以是数字、字符串、元组,一般用字符串作为键。定义的语法如下:
python的变量以及常用的数据类型
示例代码如下:

>>> mobile = {'tom':'19991111','bob':'19982222','alice':'19973333'}
>>> print(mobile)
{'tom': '19991111', 'bob': '19982222', 'alice': '19973333'}
>>> print(type(mobile))
<class 'dict'>

定义了一个字典mobile,存储的键是姓名,值是电话号码,他们构成了对应的关系,使用type函数可以查看到它的类型是’dict‘。

2)字典的取值操作
字典的取值与元组和列表有所不同,元组和列表都是通过数字索引获取对应位置的值,而字典是通过键获取对应的值。取值的语法如下:
python的变量以及常用的数据类型
示例代码如下:

>>> mobile = {'tom':'19991111','bob':'19982222','alice':'19973333'}
>>> print(mobile["tom"])
19991111
>>> print(mobile["bob"])
19982222

分别使用键“tom”“bob”可以获取到他们对应的值。需要注意的是,键是唯一的,而不同键的值却可以相同,当定义多个键相同时,字典中只会保留最后一个定义的键值对,示例代码如下:

>>> mobile = {'tom':'19991111','tom':'1×××222','tom':'19993333'}
>>> print(mobile)
{'tom': '19993333'}

字典中定义了3个“键-值”对,他们的键是相同的,最后输出时只有最后一个定义的“键-值”对存在。

3)字典的添加、修改、删除操作
字典添加新元素只需要对新键进行赋值即可,字典中不存在的键,会自动进行添加。示例代码如下:

>>> mobile = {'tom':'19991111','bob':'19982222'}
>>> (mobile['alice'])='19993333'
>>> print(mobile)
{'tom': '19991111', 'bob': '19982222', 'alice': '19993333'}

字典的键’alice‘在定义时并不存在,赋值后,键’alice‘被添加到字典中。字典键值对的键名是区分大小写的。

修改字典中的元素,直接使用存在的键赋值,示例代码如下:

>>> mobile = {'tom':'19991111','bob':'19982222'}
>>> (mobile['bob'])='19993333'
>>> print(mobile)
{'tom': '19991111', 'bob': '19993333'}

删除字典中的元素,使用del函数,语法如下:
del 字典名['键']
示例代码如下:

>>> mobile = {'tom':'19991111','bob':'19982222'}
>>> del (mobile['tom'])
>>> print(mobile)
{'bob': '19982222'}

本章博文到此结束,感谢阅读

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!