python大道至简(第三部分)

作者:下家山(qq:1209050967,微信:xiajiashan)

python大道至简(第二部分)

二十四:Python Number(数字)

 

Python Number 数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。

以下实例在变量赋值时 Number 对象将被创建:

注意:del也可以同时删除多个,如:
del var,var2,var3

24.1 python的数值类型

Python 支持四种不同的数值类型:

·       整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。

·       长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L

·       浮点型(floating pointreal values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 =250

·       复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。

int

long

float

complex

10

51924361L

0.0

3.14j

100

-0x19323L

15.20

45.j

-786

0122L

-21.9

9.322e-36j

080

0xDEFABCECBDAECBFBAEl

32.3+e18

.876j

-0490

535633629843L

-90.

-.6545+0J

-0x260

-052318172735L

-32.54e100

3e+26J

0x69

-4721885298529L

70.2-E12

4.53e-7j

·       长整型也可以使用小写"L",但是还是建议您使用大写"L",避免与数字"1"混淆。Python使用"L"来显示长整型。

·       Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型

 24.2 Python Number 类型转换

 int(x [,base])         x转换为一个整数 

long(x [,base])        x转换为一个长整数 

float(x )               x转换到一个浮点数 

complex(real [,imag ])  创建一个复数 

str(x )                 将对象 x 转换为字符串 

repr(x )                将对象 x 转换为表达式字符串 

eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象 

tuple(s )               将序列 s 转换为一个元组 

list(s )                将序列 s 转换为一个列表 

chr(x )                 将一个整数转换为一个字符 

unichr(x )              将一个整数转换为Unicode字符 

ord(x )                 将一个字符转换为它的整数值 

hex(x )                 将一个整数转换为一个十六进制字符串 

oct(x )                 将一个整数转换为一个八进制字符串

24.3 int函数

http://blog.csdn.net/tongshuo_11/article/details/70226800


Int函数不能把非字符串转成期待的base进制

但是为什么int(12)却可以呢,int(12)不是int(12,10)的简化吗?

24.4 long函数

注意系统默认加’L’

当第一个参数是整数的时候,第二个参数不能加!

24.5 float函数

Float(12)和float(‘12’)结果一样,其他int和long一样。

24.6 complex函数

还记得复数的运算规则吗:

(a+bj)*(a+bj)=a*a+bj*bj+abj+abj

所以:(1+1j)*(1+1j)=1*1+1j*1j+1*1j+1j+1 =1-1+1j+1j=2j

注意j的平方=-1.

24.7 str和repr函数的区别

   Str和repr都是把括号中的对象转成字符串,但是通俗的说法是:

  Str转换后的字符串比较直观是个用户看的,而repr转换后的字符串是本来面目,是本质,是个计算机看的。

http://blog.csdn.net/u013961718/article/details/51100464

 

就像18,十进制表示就是18,是给用户看的,但是用16进制表示却是0x12,是给计算机看,是本质。

24.8 eval函数

http://blog.csdn.net/SeeTheWorld518/article/details/47983511

eval的第一个功能:

用于计算字符串str中包含的有效的表达式的值,并返回结果

 计算字符串中有效的表达式2+2,并返回其结果4;

 计算字符串中有效的表达式pow(2,2),并返回其结果4。

Eval的第二个功能:

   在计算字符串str中包含的有效的表达式的值的同时,返回一个对象

 计算字符串中有效的表达式2+2的值,并返回计算结果,同时返回一个对象(4,0)。

Eval的第三个功能:

将字符串转成相应的对象(如listtupledictstring之间的转换)

 

二十五:list 列表

Python6个序列的内置类型,但最常见的是列表和元组。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

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

 

25.1 列表的定义

变量classmates就是一个list。用len()函数可以计算列表的长度(元素个数)

25.2 通过索引找值和通过值找索引

注意:索引从0开始。当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界。

获取最后一个元素的方法

len(classmates) - 1

如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:

 以此类推

但是,classmates[-4]越界。

注意-0=0,即零没有正负之分

通过值找索引

列表自带index函数,可以通过值找到该值在列表中位置。如果有相同值,则返回第一个匹配的位置。

25.3 列表中的方法

25.3.1 追加元素

list是一个可变的有序表,所以,可以往list中追加元素到末尾:

追加变量也可以

 

25.3.2 插入insert

  原来的第三个元素会往后移。

25.3.3 删除pop

要删除list末尾的元素,用pop()方法:

 删除指定的元素

 Pop在删除元素的同时会返回该元素。

注意,列表没有push功能

25.3.4 排序sort

注意:python 3.x不支持sort()里面传参数

通用排序函数sorted()

默认从小到大,倒序通过第二个参数reverse=True指定

25.3.5 通过值找索引位置index

     25.2

通过值找索引

列表自带index函数,可以通过值找到该值在列表中位置。如果有相同值,则返回第一个匹配的位置。

25.3.6统计元素出现的次数count

25.3.7 列表的扩展extend

注意:list2并没有改变

25.3.8 移除列表中的元素

  移除remove参数中指定的元素,如果多个,移除第一个

25.3.9 反向列表中的元素reverse

25.4 列表中函数

25.4.1 列表比较函数cmp

  注意:python3.x取消了cmp函数

25.4.2 计算列表中元素最大和最小值max(),min()

25.6 替换元素

25.7 列表里面元素可不同

 

   List里面的元素可以是一个list

 所以,classmates的元素个数是4。

 也可以这样:

要通过classmates访问num里面2怎么做呢?

类似一个二维数组

25.8 空列表的定义和长度

25.9 列表的切片(截取)

25.10 列表操作符

25.10.1 加法

25.10.2 相乘

25.10.3 迭代

判断变量是否在列表中


二十六:tuple  元组

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

26.1 元组索引

 

  访问方法,还是通过索引,而且从0开始                        

26.2 元组切片(截取)

26.3 元组一旦定义了就不能修改

现在,classmates这个tuple不能变了,它也没有append()insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple

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

26.4 元组运算符

26.4.1 加法

26.4.2 乘法

26.4.3 判断元素是否存在

26.4.4 迭代

注意:y并不需要定义

26.5 元组内置函数

26.5.1 求元组长度len()

26.5.2 求元组最大值和最小值函数

26.5.3 元组比较函数

相等为0,不等为-1.

注意:python 3.x后没有比较函数了。

26.6 空元祖及空元祖的长度

26.7 一个元素的元组

   正确的定义方法

注意:只有一个元素的列表,却没有这个问题

26.8 让不能修改的tuple变为可修改

这个tuple定义的时候有3个元素,分别是'a''b'和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了?

别急,我们先看看定义的时候tuple包含的3个元素:

当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:


表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的不变是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了指向不变后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

26.9 删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组.

 

26.10 元组和列表的区别

   元组和列表都属于python中的有序列表。

   元组用圆括号,列表用方括号;

   元组中的元素不能修改,列表可以随意修改

   元组不支持追加append,插入insert,但是列表可以

二十七:字典(Dictionary)

27.1 什么是字典

1:字典是一种可变容器模型,可以存储任意类型对象。

2:字典中的元素是通过键值来表示的,形如:

   d={key1:value1,key2:value2,key3:value3}

3: 键必须是唯一的,值可以不唯一(两个元素的值相同也可以)。

   值的数据类型可以任意,但是键的数据类型只能是字符串,数字或元组。

4:键和值之间以冒号(:)分开,元素和元素之间以逗号(,)分开,最后以花括号{}括起来。

27.2 字典的访问

27.3 字典的修改

注意:键是不能修改的,只能删除!

27.4 删除字典

删除了键值对’name’

系统提示找不到’xiajiashan’这个键

注意:只能删除键,不能直接通过del删除值

 再访问,提示找不到字典了

访问一个清空的字典,结果为空

删除某个键的方法

删除了键’b’

删除第一个键值对!(注意,有的地方说是随机删除,好像不是)

27.4.1 定义空字典

如何定义一个值为空的键

27.5 字典的特性

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

27.5.1 在一个字典里面不允许有两个相同的键

如果出现相同的键,则后一个值会被记住。

27.5.2 键的类型必须是数字,字符串或者元组,不能是列表

注意:为什么元组tup排到了中间,而键值’name’却排到了字典的最后面?

27.6 操作字典的函数

27.6.1 计算字典长度len()函数

注意:len计算的是字典键值对的个数!

27.6.2 求字典最大值和最小值的函数

  注意,比较的是键,而不是值

27.6.3 比较函数cmp()

  注意:cmp比较不仅比较键,还比较值,后面第三个例子中,dist1的值是整型,而dist2的值是浮点型,比较的时候系统会把整型转为浮点型进行比较。

27.6.3 str函数,以字符串的形式表示字典

以字符串的形式表示字典。

注意:str是通过把字典用一对双引号括起来表示为字符串的。

27.6.4 求各种变量的类型函数type

求出各种类型

27.7 字典中的方法

27.7.1  list.clear(),清除字典中的元素,使之为空

27.7.2 返回字典的浅复制

  可是:什么是浅复制

27.7.3 通过列表创建一个新字典dist.fromkeys(seq[,vla])

   注意,这里的[,val]表示参数是可选的,也即from.keys()函数里面的参数是可选的。

   如果第二个参数忽略,创建的新字典值为None

27.7.4 通过key得到val,函数dist.get(key,default)

     为什么第二个参数没有用呢?

27.7.5 判断一个键是否在字典中dist.has_key()函数

27.7.6 以列表的形式返回字典中对应的键值对

注意:把字典dist中的键值对,做成了对应的元组形式,然后以列表的形式显示。

27.7.7 以列表的形式返回字典中的键/值

注意,值为None的键,放在了最后。

27.7.8 设置一个键值函数dist.setdefault(key,default)

注意:此函数主要用于插入新的键值对

27.7.9 更新键值对

27.8.1 字典的遍历

https://www.cnblogs.com/stuqx/p/7291948.html

http://www.lfhacks.com/tech/subdictionary-python

Python大道至简(第四部分)

发布了38 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_27320195/article/details/79969859