本节介绍在Python语法中不同的变量数据类型。
(1)基本数据类型:
>>> a=10; >>> b=10.0; >>> c=True; >>> d="我在学习Python"; >>> print(a,b,c,d) 10 10.0 True 我在学习Python >>> print("",type(a)," ",type(b)," ",type(c)," ",type(d)," "); #内置函数type()可以查询变量的类型 <class 'int' at 0x58C569A8> <class 'float' at 0x58C54AE0> <class 'bool' at 0x58C4A0D8> <class 'str' at 0x58C5CBB0>
Python 中的变量赋值不需要类型声明;Python 中的基本数据类型有整型、浮点型、布尔型、字符串型。
Python支持多个变量同时赋值:
>>> a=b=c=8j; >>> print(a,b,c) 8j 8j 8j >>> print(type(a)); <class 'complex' at 0x58C4E418> >>> a,b,c=1/2,5.6/2.8,4>5; >>> print("",type(a)," ",type(b)," ",type(c)) <class 'float' at 0x58C54AE0> <class 'float' at 0x58C54AE0> <class 'bool' at 0x58C4A0D8>
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
(2)标准数据类型:
Python有五个标准的数据类型: 1.Numbers(数字) 2.String(字符串) 3.List(列表) 4.Tuple(元组) 5.Dictionary(字典)
1)Python数字:(数字数据类型用于存储数值)
>>> a=10; >>> b=10.0; >>> c=10j; >>> print("",type(a)," ",type(b)," ",type(c)); <class 'int' at 0x58C569A8> <class 'float' at 0x58C54AE0> <class 'complex' at 0x58C4E418> >>> d=1234567891011121314 >>> print(type(d)) <class 'int' at 0x58C569A8>
Python数字有三种类型整型、浮点型和复数类型。整型是不需要限制位数的。
可以用complex构造复数:
>>> c=complex(4,6) >>> print(c) (4+6j) >>> d=4+6j >>> print(d) (4+6j)
用del回收变量:
>>> a=10 >>> a 10 >>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined
2)字符串:(字符串或串(String)是由数字、字母、下划线组成的一串字符。)
它是编程语言中表示文本的数据类型。
python的字串列表有2种取值顺序:
1.从左到右索引默认0开始的,最大范围是字符串长度少1;
2.从右到左索引默认-1开始的,最大范围是字符串开头。
>>> a="I love Python!" >>> a[2:6] 'love' >>> a[5:1:-1] 'evol' >>> print(a+" Hello World!") //输出拼接的字符串 I love Python! Hello World! >>> print(a*2) //输出两次字符串 I love Python!I love Python! >>> print(a[13:0:-1]) !nohtyP evol_ // _代表空格
上述的方法是不能直接实现倒序输出字符串的,下面是一种方法:
sunjimeng@SJM:~/文档$ cat text.py a="上海自来水来自海上"; print(a[8:0:-1]); for i in range(9): print(a[8-i]); sunjimeng@SJM:~/文档$ python3.5 text.py 上海自来水来自海 上 海 自 来 水 来 自 海 上
3)列表:(列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。)
列表用[ ]标识。是python最通用的复合数据类型。
列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。
加号(+)是列表连接运算符,星号(*)是重复操作。
sunjimeng@SJM:~/文档$ python3.5 Python 3.5.2 (default, Jul 17 2016, 11:52:15) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information.>>> normal_list=['字符串',123,4+8j,['列表里的列表',4/2]] >>> tiny_list=['你好',122] >>> print(normal_list) //1.输出完整的列表 ['字符串', 123, (4+8j), ['列表', 2.0]] >>> print(normal_list[3]) //2.输出指定的列表元素 ['列表', 2.0] >>> print(tiny_list*2) //3.输出两次指定结果 ['你好', 122, '你好', 122]
4)元组(元组是另一个类似于List的数据类型)
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
>>> tuple=('静态列表',122,True) >>> tiny_tuple=(4j,('你好',True),122) >>> print(tiny_tuple[2]) 122 >>> print(tuple) ('静态列表', 122, True)
元组与列表的对比:
>>> list=['字符串',122,5j] >>> tuple=('你好',234,5/4) >>> list ['字符串', 122, 5j] >>> tuple ('你好', 234, 1.25) >>> list[1]='xg' >>> list ['字符串', 'xg', 5j] >>> tuple[1]=True Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
list允许修改其中的元素,tuple不允许修改元素。list和tuple都相当于一个引用,他们是可以引用新的列表或元组的:
>>> print(tuple) ('静态列表', 122, True) >>> list ['abcd', 786, 2.23, 'john', 70.2] >>> list=["修改后的列表"] >>> tuple=('修改后的元组',123) >>> tuple ('修改后组', 123)
5)sequence 序列
sequence(序列)是一组有顺序的元素的集合 (严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素) 。
序列可以包含一个或多个元素,也可以没有任何元素。我们之前所说的基本数据类型,都可以作为序列的元素。元素还可以是另一个序列,以及我们以后要介绍的其他对象。
序列有两种:tuple(定值表; 也有翻译为元组)和list (表)。
6)元字典(除序列以外的最灵活的数据结构)
列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{}"标识。字典由索引(key)和它对应的值value组成:(键值对)
>>> sjm = {} >>> sjm['age'] = 122 >>> sjm['name']='sunjimeng' >>> sjm['ch_name']='孙继锰' //注意用单引号 >>> print(sjm) {'age': 122, 'name': 'sunjimeng', 'ch_name': '孙继锰'} >>> hhj={'name':'ningcaichen','age':18} >>> hhj {'age': 18, 'name': 'ningcaichen'}
(3)数据类型转换:
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
这些是老版本的Python里的类型转换函数,可能有些是不能用的。