python 学习笔记 3 ----> dive into python 3

时间:2022-02-20 10:14:13

Python内置数据类型

注意:

Python可以不需要声明变量的数据类型。它是根据变量的初始赋值情况分析数据类型,并在内部跟踪变量。

比较重要的数据类型:

1 布尔型(Booleans):True、False,它们是常量,可以对布尔类型变量直接赋值。

布尔类型上下文:if语句

布尔类型可以被当做数值0和1进行计算,Python2遗留问题。

2 数值型(Numbers):Integers、Floats、Fractions、Complex Number

Integer和Floating point的区别:看是否有小数点

数值类型判断:1 type() 2 isinstance()

数值运算:1 int + int = int 2 int + float = float

数值的强制转换:1 int() 2 float()

数值的计算类型:

/ 浮点除法

// 整数除法,可能返回浮点数(当分子或者分母是浮点数时)

** 计算幂

% 求余

分数运算:引入fractions模块

>>> import fractions
>>> x = fractions.Fraction(1,2)
>>> x
Fraction(1, 2)

三角函数运算:引入math模块

>>> import math
>>> math.pi
3.141592653589793
>>> math.sin(math.pi / 2)
1.0

注意:

1 int()是取整函数,对于负数取整是往0靠近的数取整

2 浮点数精确到小数点后15位

3 Python3只有一种整数类型

4 // 运算,如果分子或者分母是负的浮点数,那么结果是浮点数,取值为除去小数部分的绝对值加1.0,然后加上负号

>>> -12.2 // 2 '''绝对值为6.1,去掉小数部分为6,再加上1.0等于7.0,最后加上负号为-7.0'''
-7.0
>>> -12.9 // 2 '''绝对值为6.45,去掉小数部分为6,再加上1.0等于7.0,最后加上负号为-7.0'''
-7.0>>> 11.0 // -2 '''绝对值为5.5,去掉小数部分为5,再加上1.0等于6.0,最后加上负号为-6.0'''-6.0>>> 11 // -2.0-6.0

5 布尔上下文环境中的数值

零值(0,0.0)是False,非零值(正负小数,正负整数数等等)是True。
分数也可以在布尔上下文环境中使用,fractions.Fraction(0,n)为False。

3 列表(Lists):元素的有序集合

列表类似Java中的ArrayList,它可以容纳任何对象,可以动态扩展。列表可以不用声明数据类型

创建列表:list_name = ['a', 'b', 'c', 'x', 'y', 'z'],使用中括号包裹一系列以逗号分割的值

注意:

1 列表以零为基点,非空列表的首个元素是list_name[0],最后一个元素是list_name[len(list_name) - 1]

2 len() 计算列表的长度

3 可以使用负索引值从后往前访问列表元素,非空列表的最后一个元素是list_name[ - 1]

4 负索引值和正索引值的关系:list_name[len(list_name) - n] = list_name[ - n]

5 对列表进行切片,返回新列表

  1 list_name[1:3]:返回新列表,索引值范围为1到2,不包括3

  2 list_name[1:-1]:返回新列表,去掉头尾两个列表元素,取中间部分

  3 list_name[:3] == list_name[0:3]:返回新列表,索引值范围为0到2,不包括3

  4 list_name[:3]:返回新列表,包含头三个元素,而 list_name[3:] :返回新列表,包含最后三个元素

  5 一般地,list_name[:n] 返回头n个元素,而 list_name[n:] 返回剩余元素

  6 list_name[:]:返回新列表,是对列表的复制

6 向列表添加新元素,注意append()和extend()的区别

  1 + 连接列表以创建一个新列表。

  2 append() 只接受一个参数,但可以是任何数据类型

  3 extend() 只接受一个参数,而该参数总是一个列表

  4 insert() 将单个元素插入到列表。

7 在列表中检索元素

  1 count() 返回列表中特定元素出现的次数

  2 index() 返回指定元素在列表中的索引值,若指定元素不存在于列表中,那么Python会抛出异常

  3 in 判断指定元素是否存在于列表中,若存在,返回True,反之返回False

8 从列表中删除元素,列表永远不会有缝隙,列表可以自动拓展或者收缩

  1 del 通过索引从列表中删除某个特定元素

  2 remove() 通过值从列表中删除某个元素,试图删除一个空列表将抛出一个异常

  3 pop() 不带参数时,删除列表最后的元素,返回删除的元素,试图删除一个空列表将抛出一个异常

       通过索引从列表中删除某个特定元素,返回删除的元素

9 空列表为假;其它所有列表为真

4 元组(Tuples):元素是不可变的列表。

创建元组:tuple_name =('a', 'b', 'c', 'x', 'y', 'z'),使用小括号包裹一系列以逗号分割的值

注意:

1 元组和列表的区别:元组不能进行修改(元组是不可变更的,没有可用于修改元组的方法。)

2 元组可以做的事情:切片操作;检查元组是否包含指定的元素。

3 元组不能做的事情:没有 append() 或 extend() 方法,没有 remove() 或 pop() 方法

4 元组和列表之间的转换:

  1 列表转元组:tuple()

  2 元组转列表:list()

5 空元组为假;其它所有元组为真

6 为创建单元素元组,需要在值之后加上一个逗号,否则不创建元组

7 使用元组同时赋多个值

>>> v = ('a', 2, True)
>>> (x, y, z) = v  

5 集合(Sets):无序且不重复,可以包含任何数据类型的值。

创建集合:set_name ={'a', 'b', 'c', 'x', 'y', 'z'},使用花括号包裹一系列以逗号分割的值

注意:

1 通过列表创建集合,使用set()函数:set(list_name)

2 使用set()函数创建空的集合:set_name = set()

3 what_this_is = {} :创建了空的字典

4 修改集合:

  1 add() 接受单个可以是任何数据类型的参数

  2 update() 仅接受一个集合作为参数,还可接受一些其它数据类型的对象作为参数,包括列表。可以接受多个集合,集合间通过逗号隔开。

5 从集合中删除元素:

  1 discard() ) 接受一个单值作为参数,并从集合中删除该值。删除不存在的元素不会报错。

  2 remove() ) 接受一个单值作为参数,并从集合中删除该值。删除不存在的元素会报错:KeyError。

  3 pop() 从集合中随机删除某个值,并返回该值。删除空集合会报错:KeyError。

  4 clear() 删除集合中所有的值,留下一个空集合。它等价于 a_set = set()。

6 常见的集合运算:

  1 in 成员运算

  2 union() 并集

  3 intersection() 交集

  4 difference() 求差

  5 symmetric_difference() ???

  6 issubset() 子集

  7 issuperset() 超集

7 空集合为假;其它所有集合为真

6 字典(Dictionaries):是键值对的无序集合。

创建字典的语法与集合的类似,但应当指定键值对而不是值。

创建字典:dict_name ={'a':1, 'b':2, 'c':3, 'x':4, 'y':5, 'z':6},使用花括号包裹一系列以逗号分割的键值对

注意:

1 每个字典项都是一组键值对,整个字典项集合都被大括号包裹在内。

2 可以通过键获取值,但不能通过值获取键。

3 修改字典:指定字典项的键,然后赋值。对已经存在的键赋值,结果是新值覆盖旧值。

4 在字典中不允许有重复的键。

5 添加新的键值对:指定字典项的键(键是新的),然后赋值。

6 字典的键区分大小写。

7 字典的值可以是任何数据类型:整数、布尔值、任何对象(字典)。

字典的键可以是字符串、整数和其它一些类型。

8 在同一字典中,所有的值也无须是同一类型,可根据需要混合匹配。在同一字典中也可混合、匹配使用不同数据类型的键。

9 其它:

  1 len()(计算字典中键的数量。)

  2 in成员运算(测试某个特定的键是否在字典中。 )

  3 字典为假值;所有其它字典为真值。

7 None

Python特殊常量。

注意:

1 它是一个空值。

2 None不是False,不是空字符串,不是0。

3 None与任何非None比较返回False。

4 None是唯一的空值,类型为NoneType

5 None 为假值,而 not None 为真值

6 可将 None 赋值给任何变量,但不能创建其它 NoneType 对象。

7 所有值为 None 变量是相等的。

字符串型(Strings):Unicode字符序列

字节型(Bytes)和字节数组(Byte Arrays)

更多的类型:模块(module)、函数(function)、类(class)、方法(method)、文件(file)、已编译代码(compiled code)

参考文档:

dive into python 3

python372.chm