我的Python学习之旅(02)
- 基本数据类型及变量的使用
- list和tuple
- 条件判断和循环
- dict和set
好,接着上次的话题来说说Python的数据类型
首先,说个题外话,推荐学习python的大家去看看廖雪峰老师的博客,讲得十分详细,受益匪浅,适合我们这种新手小白,此篇数据类型的讲解就来自廖老师
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
在Python中,能够直接处理的数据类型有以下几种:
一、整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
二、浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
三、字符串
字符串是以”或”“括起来的任意文本,比如’abc’,”xyz”等等。请注意,”或”“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用”“括起来,比如”I’m OK”包含的字符是I,’,m,空格,O,K这6个字符。
如果字符串内部既包含’又包含”怎么办?可以用转义字符\来标识,比如:
'I\'m \"OK\"!'
表示的字符串内容是:
I'm "OK"!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,可以在Python的交互式命令行用print打印字符串看看:
>>> print 'I\'m ok.'
I'm ok.
>>> print 'I\'m learning\nPython.'
I'm learning
Python.
>>> print '\\\n\\'
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r”表示”内部的字符串默认不转义,可以自己试试:
>>> print '\\\t\\'
\ \
>>> print r'\\\t\\'
\\\t\\
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用”’…”’的格式表示多行内容,可以自己试试:
>>> print '''line1
... line2
... line3'''
line1
line2
line3
多行字符串”’…”’还可以在前面加上r使用,请自行测试。
四、布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来:
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:
>>> True and True
True
>>> True and False
False
>>> False and False
False
or运算是或运算,只要其中有一个为True,or运算结果就是True:
>>> True or True
True
>>> True or False
True
>>> False or False
False
not运算是非运算,它是一个单目运算符,把True变成False,False变成True:
>>> not True
False
>>> not False
True
布尔值经常用在条件判断中,比如:
if age >= 18:
print 'adult'
else:
print 'teenager'
空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型
list和tuple
python内置两种有序数组类型,list和tuple
list是一种有序的集合,可以随时添加和删除其中的元素
而tuple是元组,一旦初始化就不能修改
list
>>> students = ['zhangsan', 'lisi', 'wangwu']
>>> students
['zhangsan', 'lisi', 'wangwu']
- 将元素插入到指定位置 —— insert
>>> students.insert(2, 'zhaoliu')
>>> students
['zhangsan', 'lisi', 'zhaoliu','wangwu']
而直接这样赋值会把元素替换掉
>>> students[2] = 'zhaoliu'
>>> students
['zhangsan', 'lisi', 'zhaoliu']
- 获取列表个数—— len()
>>> len(students)
3
- 删除列表末尾元素——pop()
>>> students.pop()
'wangwu'
>>> students
['zhangsan', 'lisi']
- 删除列表指定位置元素——pop(x)
>>> students.pop(1)
'lisi'
>>> students
['zhangsan', 'zhaoliu']
- 小技巧
一、当索引超出了范围时,Python会报一个IndexError错误
IndexError: list index out of range
所以,要确保索引不要越界,记得最后一个元素的索引是len(students) - 1
二、要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素
>>> students[-1]
'wangwu'
以此类推,可以获取倒数第2个、倒数第3个
三、list元素也可以是另一个list
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
或
>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']
↑ 这样是不是更简洁易懂?其实就是个二维数组嘛
访问的话就是
>>>s[2][1]
'asp'
三、给list赋空值
>>> ls = []
>>> len(ls)
0
tuple
>>> students = ('zhangsan', 'lisi', 'wangwu')
>>> students
('zhangsan', 'lisi', 'wangwu')
制造一个空的tuple
>>> t = ()
>>> t
()
- 小技巧
将tuple变成“可变”元组
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
相信大家都看懂了,变的不是tuple而是list,所以tuple本质上还是不可变的
剩下的,下次吧……