python-fullstack-s13-day14-python基础

1、列表推导式:

  [变量(加工后的变量) for 变量 in iterable] 循环模式
  [变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式

1 # 生成列表[1,2,3,,,10]
2 lst1 = [i for i in range(1,11)]
3 print(lst1)
4 # 生成列表[python1期,python2期,,,python13期]
5 lst2 = ["python%s期" % i for i in range(1,14)]
6 print(lst2)
7 # 生成30以内可以被3整除的数的列表
8 lst3 = [i for i in range(1,31) if i % 3 == 0]
9 print(lst3)

  列表表达式的高级一点的应用:

 1 names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
 2          ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
 3 l4 = [name for i in names for name in i if name.count('e') == 2]
 4 l5 = []
 5 for i in names:
 6     for name in i:
 7         if name.count('e') == 2:
 8             l5.append(name)
 9 print(l4)
10 print(l5)

  优点:

    1、节省代码
    2、看着高大上
  缺点:
    1、不好排错
  整体:
    凡是用列表推导式构造的列表对象,用其他方式都可构建,非常复杂的列表推导式是构建不出来的。
    列表推导式比较有魔性,但是不能用列表推导式写出来的代码就不要勉强了。

2、生成器表达式:

1 # 生成期(python1期,python2期,,,python13期])
2 g_obj = ("python%s期" % i for i in range(1,14))
3 print(g_obj)

  1、一种是用生成器函数yield

  2、一种是生成器表达式,与列表表达式想类似,不过外面用的是()

  为什么有生成器:
    生成器本身是自己用python代码构建的,这样就满足了个性化需求,满足以后你工作中的需要。

猜你喜欢

转载自www.cnblogs.com/bug-ming/p/9203694.html
今日推荐