博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

10.循环

(1)for循环依次把list或tuple的每个元素迭代出来

格式:

 

 name 这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 name,然后执行for循环体(就是缩进的代码块)

 

 这样一来,遍历一个list或tuple就非常容易了。

(2)while循环,不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。

 

 (3)中断循环 break和continue

   (4)range()的用法

range(1,5) #代表从1到5(不包含5)   [1, 2, 3, 4]

range(1,5,2) #代表从1到5,间隔2(不包含5)   [1, 3]

range(5) #代表从0到5(不包含5)   [0, 1, 2, 3, 4]

(5)Python中,迭代永远是取出元素本身,而非元素的索引。

对于有序集合,元素确实是有索引的。使用enumerate()函数拿到索引

使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:['Adam', 'Lisa', 'Bart', 'Paul']

 

变成了类似:[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

 

因此,迭代的每一个元素实际上是一个tuple

(6)好用的zip()方法

 

 

 (7)列表生成式

假如要生成[1x1, 2x2, 3x3, ..., 10x10]

 

 列表生成式的 for 循环后面还可以加上 if 判断。

例如:

 

 (8)迭代器

它为类序列对象提供了一个类序列的接口。

迭代非序列集合(例如映射和文件)时, 可以创建更简洁可读的代码。

 

 11字典

(1)字典的元素没有顺序。你不能通过下标引用元素。字典是通过键来引用,用大括号

查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

dict的缺点是占用内存大,还会浪费很多内容

dict是按 key 查找,所以,在一个dict中,key不能重复

作为 key 的元素必须不可变

 (2)已知两个列表,一个是名字,一个是成绩,要根据名字找到对应的成绩用两个list不方便,如果把名字和分数关联起来,组成类似的查找表,即 Python中的dict

用 dict 表示“名字”-“成绩”的查找表如下:

 

 (3)我们把名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value。

(4)花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

(5)由于dict也是集合,len()函数可以计算任意集合的大小:

 

 一个 key-value 算一个,因此,dict大小为3。

(6)可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:

 

 注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。

要避免 KeyError 发生,有两个办法:

一是先判断一下 key 是否存在,用 in 操作符:

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

 

 

 

 (7)在字典中增添一个新元素的方法:

 

 (8)循环调用

 

 (9)字典的常用方法

print d.keys()          # 返回d所有的键

print d.values()         # 返回d所有的值

print d.items()         # 返回d所有的元素(键值对)

d.clear()            # 清空d,dict变为{}

del d[‘xxx’]                   # 删除 d 的‘xxx’元素

(10)cmp()比较

先比较字典长度

再比较字典的键

最后比较字典的值

都一样就相等

12.集合(set)

(1)dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的

有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场

(2)set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

(3)创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

 

 (4)添加和删除

 

 13.函数

(1)定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

 

 (2)如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。

(3)函数返回多个值

 

 其实这只是一种假象,Python函数返回的仍然是单一值,是一个tuple:但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

(4)在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

 

 (5)定义函数的时候,还可以有默认参数。

 

 由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:

(6)由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:

 

 可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:

(7)基本数据类型的参数:值传递

表作为参数:指针传递

14.pass del exec eval

(1)pass语句

pass代表该语句什么都不做,因为python中空代码是非法的,比如一个if语句要求什么内容都不做,我们就可以使用pass语句

(2)del语句

一般来说python会删除那些不在使用的对象(因为使用者不会再通过任何变量或者数据结构引用它们)

(3)exec语句(运行字符串中的程序)

 

 (4)eval函数(会计算python表达式(以字符串形式书写),并且返回结果)

 

 

 

 

 

 15.内建函数

(1)cmp(obj1, obj2) 比较 obj1 和 obj2, 根据比较结果返回整数 i:
     if obj1 < obj2   返回i < 0
    if obj1 > obj2   返回i > 0
    if obj1 == obj2  返回i == 0

如果是用户自定义对象, cmp()会调用该类的特殊方法__cmp__()

(2)str() 强制转换成字符串

(3)type() :详见(3)数据类型 - 3、

(4)help():通过用函数名作为 help()的参数就能得到相应的帮助信息

(5)isinstance(变量名,类型): 判断是否是这个类型的元素,可以用if语句

(6)abs():取绝对值

(7)enumerate():详见(10)循环 - 5、

(8)len(seq):返回seq的长度

(9)sorted(iter):排序,会调用cmp()

(10)zip(a1,a2……):详见(10)循环 - 6、

(11)range():详见(10)循环 - 4、

(12)string.lower():转换字符串中所有大写字符为小写

(13)string.upper():转换字符串中所有小写字符为大写

(14)string.strip():删去字符串开头和结尾的空格

(15)string.capitalize():把字符串第一个字符大写

(16)string.title():所有单词都以大写开头

(17)max()和min():找出最大和最小值

(18)sum():求和

(19)reversed():倒序输出

 

 

 



 

posted on 2022-01-18 21:06    阅读(77)  评论(0)    收藏  举报