基本的数据类型
在Python中,能够直接处理的数据类型有以下几种:
整数
Python可以处理任意大小的整数,包括负整数,写程序的时候表述与数学上的方法一样,例如:99,-3,6666 等等。
浮点数
浮点数也可以称为小数。叫做浮点数是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。比如,1.11x106和11.1x105是完全相等的。对于很大或很小的浮点数,必须用科学计数法表示,把10用e替代,1.11x106就是1.11e6,或者11.1e5,0.0000011可以写成1.1e-6。负数的话直接在前面加负号即可,例如:-1.1e-6。
需要注意的一点是,整数和浮点数在计算机内部存储的方式是不同的,整数之间的运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。
字符串
字符串是以单引号 ' 或双引号 " 括起来的任意文本' '或" "只是一种表示方式,不是字符串的一部分,所以字符串'rice'只有r,i,c,e这4个字符。如果要把'本身也包括进字符里,那就可以用" "括起来。如果字符串内部既包含 ' 又包含 " 怎么办呢?我们可以用转义字符 \ 来标识,例如:'I\'m \"OK\"!'表示的内容为:I'm "OK"!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,用print()打印字符串看看结果如何:
print('I\'m \"OK\"!')
I'm "OK"!
print('Ricequant is\ngreat')
Ricequant is
great
print('\\\t\\')
\ \
布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值。Python中,既可以直接用True、False表示(一定要大写),也可以通过布尔运算计算出来:
True
True
False
False
1>0
True
布尔值可以用and、or和not即与、或和非进行运算。
True and False
False
1 > 2 or 3 < 10
True
not 3 < 10
False
列表
Python内嵌的数据类型主要包括以下两类:
有序:
List(列表),是有序集合,没有固定大小,可以通过对偏移量以及其他方法修改列表大小。列表的基本形式如:[1,2,3,4]
Tuple(元组),是有序集合,是不可变的,可以进行组合和复制运算后会生成一个新的元组。元组的基本形式比如:(1,3,6,10)
String(字符串),也是有序集合,字符串的基本形式比如:’hello’,这里不进行具体介绍。
无序:
Set(集合),是一个无序不重复元素的集。基本功能包括关系运算和消除重复元素。集合的基本形式如:set('abracadabra')
Dictionary(字典)是无序的键:值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。字典的基本形式如:{'jack': 4098, 'sape': 4139} 首先对列表进行介绍。
List(列表) 是 Python 中最通用的序列。列表是一个任意类型对象位置的相关有序集合,它没有固定大小。不像字符串,其大小是可以变的,通过对偏移量进行赋值以及其他各种列表的方法进行调用,可以修改列表大小。
索引是从0开始而非1开始!!
列表中值的分割用变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认“0”开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。可以对列表进行索引、切片等操作,看下面例子。
列出一周5个工作日可以使用list:
week = ['Monday','Tuesday','Wednesday','Thursday','Friday']
week
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
week是一个list,可以用len()获取其元素个数:
len(week)
5
可以使用索引来访问list中的每一个位置上的元素,不过一定要记住索引是从0开始的!!
week[0]
'Monday'
week[3]
'Thursday'
week[5]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-16-aab97e4d2f9f> in <module>()
----> 1 week[5]
IndexError: list index out of range
当索引超出了范围时,Python会报一个IndexError错误。由于索引是从0开始的,最后一个元素的索引是列表长度 - 1。
python支持从列表最后取元素,如果要取最后一个元素,可以用-1做索引,直接获取最后一个元素:
week[-1]
'Friday'
week[-4]
'Tuesday'
由于list是一个可变的有序表,所以我们可以往list中追加元素到末尾:
week.append('Saturday')
week
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
还可以吧元素插入到指定的位置,比如索引号为6的位置:
week.insert(6,'Sunday')
week
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
删除list末尾的元素,使用pop()方法:
week.pop()
week
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
删除list中指定位置的元素,使用pop(i)方法,i是对应的索引位置:
week.pop(1)
week
['Monday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
week[0] = 'Tuesday'
week
['Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
Python 的列表数据类型包含更多的方法。
list.append(x) 把一个元素添加到列表的结尾。
list.extend(L) 将一个给定列表中的所有元素都添加到另一个列表中。
list.insert(i, x) 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)。
list.remove(x) 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i]) 从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。元素随即从链表中被删除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,这个经常会在 Python 库参考手册中遇到这样的标记。)
list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x) 返回 x 在链表中出现的次数。
list.sort(cmp=None, key=None, reverse=False) 对列表中的元素进行排序(参数可以用来自定义排序方法,参考 sorted() 的更详细的解释)。
list.reverse() 就地倒排链表中的元素
del list[i] 有个方法可以从列表中按给定的索引而不是值来删除一个子项:del 语句。它不同于有返回值的 pop() 方法。语句 del 还可以从列表中删除切片或清空整个列表(我们以前介绍过一个方法是将空列表赋值给列表的切片)。