数据类型

2.1 整数 int

python可以处理任意大小的整数,当然也包括负数,在程序中的表示方法和数学上的写法一样,例如 1 100 200-100等等

计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9a-f表示

例如0xff000xa5b4,等等

2.2 浮点数

浮点数也会是小数,之所以称为浮点数,是因为按照科学计数法表示时,一个浮点数的小数点位置是可变的,比如1.23x10九次方和12.3x108次方是完全相等的,浮点数可以用数学写法,如1.233.14-9.01,等等但是对于很大或者很小的浮点数就必须用科学计数法表示把10e代替1.23x10的九次方就是1.23e90.000012可以写成1.2e-5,等等

字符串

字符串是以单引号或者双引号括起来的任意文本,如果字符串内部包含单引号或者双引号。可以用户\来转义比如

>>> print('cao ' jiao ""yue"')

  File"<stdin>", line 1

   print('cao ' jiao " "yue"')

                   ^

SyntaxError: invalid syntax

>>> print('cao \' jiao \"\"yue\"')

cao ' jiao " "yue"

>>> 

如果字符串内部有很多换行,用\n写就不好读了。为了简化python允许用’’’……..’’’的格式表示多行

>>> print('''cao

... jiao

... yue''')

cao

jiao

yue

>>> 

写到文件里就是

print('''cao

jiao

yue''')

2.3 布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有TrueFalse两种值,要么是True,要么是False,在python中可以直接用TrueFalse表示布尔值,也可以通过布尔运算计算出来

>>> True

True

>>> False

False

>>> 3 > 2

True

>>> 3 > 5

False

>>> 

条件成立时布尔值就是True

条件不成立时布尔值就是False

布尔值还可以用andornot运算。

2.3.1 and

and是与的意思,只有当条件都为True的时候结果才为True

>>> 3 > 5 and 1 > 2

False

>>> 3 > 2 and 1 > 2

False

>>> 3 > 2 and 4 > 2

True

>>> 

2.3.2 or

or是或的意思,其中只要有一个运算结果为True那么结果就为True

>>> 3 > 5 or 1 > 2

False

>>> 10 > 5 or 1 > 2

True

>>> 

2.3.3 not

not是非的意思,TrueFalseFalseTrue

>>> not 1

False

>>> not 0

True

>>> not False

True

>>> not True

False

>>> 

0表示False,非零表示True

2.4 空值

空值是python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。此外python还提供了列表、字典、等多种数据类型,还允许创建自定义数据类型

2.5 变量

一个会变的量。变量不仅可以是数字还可以是任意数据类型

>>> a = 'abc'

>>> b = a

>>> a = 'caojiaoyue'

>>> b

'abc'

>>> 

2.6 列表

python内置的一种数据类型是列表:list是一种有序的集合,可以随时添加和删除其中的元素。

比如,列出班里所以学生的名字,就可以用一个list表示

>>> cao = ['cao','jiao','yue',100]

>>> cao

['cao', 'jiao', 'yue', 100]

>>> 

变量cao就是一个列表

可以用len函数来查看他的元素的个数

>>> cao = ['cao','jiao','yue',100]

>>> cao

['cao', 'jiao', 'yue', 100]

>>> len(cao)

4

>>> 

用索引来打印列表里的每个元素

>>> print(cao[0])

cao

>>> print(cao[1])

jiao

>>> print(cao[0],cao[1])

('cao', 'jiao')

>>> 

2.6.1 append

在列表的最后追加元素

>>> cao.append('cao')

>>> cao

['cao', 'jiao', 'yue', 100, 'cao']

>>> cao.append('liu')

>>> cao

['cao', 'jiao', 'yue', 100, 'cao', 'liu']

>>> 

2.6.2 insert

在列表的指定位置插入元素

>>> cao.insert(0,'liu')

>>> cao

['liu', 'cao', 'liu', 'jiao', 'yue', 100, 'cao','liu']

>>> cao.insert(0,123)

>>> cao

[123, 'liu', 'cao', 'liu', 'jiao', 'yue', 100,'cao', 'liu']

>>> 

2.6.3 pop

删除一个列表里的某个元素

>>> cao

[123, 'liu', 'cao', 'liu', 'jiao', 'yue', 100,'cao', 'liu']

>>> cao.pop()

'liu'

>>> cao.pop(1)

'liu'

>>> cao

[123, 'cao', 'liu', 'jiao', 'yue', 100, 'cao']

>>> 

列表里的元素也可以是另一列表

>>> cao[2] = ['liuwen', 'hucong']

>>> cao

[123, 'cao', ['liuwen', 'hucong'], 'jiao', 'yue',100, 'cao']

>>> cao[2][0]

'liuwen'

>>> cao[2][1]

'hucong'

>>> 

因此cao就是一个二维数组

2.7 元组

另一种有序的列表叫元组,元组和列表非常相似,但是元组一旦初始化就不能修改,比如同样是列出同学的名字:

>>> yue = ('cao','jiao','yue')

>>> yue

('cao', 'jiao', 'yue')

>>> 

但是yue这个元组是不能改变了,它没有appendinsert这样的方法。其他获取元素的方法还是和列表一样。你可以正常的使用cao[0],cao[-1],但是不能赋值其他的元素

正是应为不可以变化所以数据更安全。

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如

>>> t = (1,2,3)

>>> t

(1, 2, 3)

>>> len(t)

3

>>> 

如果要定义一个空的在元组,可以写成;

>>> t = ()

>>> t

()

>>> 

但是,要定义一个只有1个元素的元组,如果你这样定义:

 

>>> t = (1)

>>> t

1

>>> 

别人怎么知道1是表示是1这个值还是元素个数呀,为了避免这样的分歧,通常会加一个逗号

>>> t = (1,)

>>> t

(1,)

>>> 

一个可变化的元组

>>> t = ('a', 'b', ['a', 'b'])

>>> t

('a', 'b', ['a', 'b'])

>>> t[2][0]

'a'

>>> t[2][0] = 'i'

>>> t

('a', 'b', ['i', 'b'])

>>> 

 

表面上看元组的元素确实变了。但是变化的其实不元组的元素,而是列表的元素

小结

列表和元组是python内置的有序集合,一个可以变化,一个不可以变化,根据需要来选择