python之高级编程

可迭代对象

  • 我们已经知道可以对list、tuple、dict、set、str等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。
  • 把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。

推导式

  • 推导式分为 列表推导式、字典推导式、集合推导式等。在这里我们主要说其中一种也是用的最多列表推导式
  • 列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表简单理解就是由一个旧的列表来构建出一个新的列表
  • 语法:
    [表达式 for 变量 in 旧列表]
#表达式方法参考
list1 = [1,2,3,4,5,6,7,8,9]
list2 = [i + 1 for i in list1]
print(list4)
#list2 = [2, 3, 4, 5, 6, 7, 8, 9, 10]

[表达式 for 变量 in 旧列表 if 条件]

#可加入if语句进行判断
list3 = [1,2,3,4,5,6,7,8,9]
list4 = [i for i in list3 if i % 2 == 0]
print(list4)
#list4 = [2, 4, 6, 8]

生成器

背景

  • 通过列表推导式我们可以直接创建出一个列表,但是受到内存的限制,我们不可能创造出一个无限大的列表。而且创建一个有200万个元素的列表,会占用很大的内存空间,而这个时候我们仅仅需要访问列表中几个元素,那么后面的元素就占用着空间就是一种浪费的行为。那么我们可不可以用几个元素就创建出几个元素。这样在一定程度上就优化了内存。那么在Python中有一种一边循环一边计算的机制就是生成器。
  • 简单来说生成器的作用就是优化内存空间的使用,避免不必要的浪费。

创建生成器的方式

通过列表推导式的方式

g = (x * 3 for x in range(10))

通过函数的方式

def fu():
    n = 0
    while True:
        n += 1
        yield n
  • 只要在函数中出现yield关键字它就是一个生成器函数

迭代器

关系对应图
python之高级编程

迭代器

  • 迭代器是访问集合元素的一种方式。迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束。
  • 可以被next()函数调用并不断返回下一个值的对象称为迭代器Iterator
  • 生成器是可迭代的,也是迭代器
  • 列表是可迭代的,但不是迭代器
  • 通过iter()函数可以将可迭代的变成一个迭代器
上一篇:c#-在特定顺序比较器中对列表进行排序


下一篇:c# – 实现自定义IComparer <>(带示例)