导航

推到式_列表

Posted on 2019-03-28 23:38  菜花教授  阅读(94)  评论(0编辑  收藏  举报

通过一行循环循环判断, 遍历出一系列数据的方式

 1 """
 2 推导式语法:
 3    i for i in iterable
 4    
 5 通过迭代对象循环得出的i, 
 6 扔到左侧进行处理, 
 7 处理结束后放到容器中
 8 
 9 
10 执行流程:
11    从左向右, 
12    左边的循环是外循环, 右边的循环是内循环
13    进行右侧的条件判断后返回给最左边处理
14    左边可以是三目运算符
15    处理完毕后,放入容器进行返回
16 """

1.普通推导式

 1 # [1,2,3,4] => [2,8,24,64]
 2 listvar = [1, 2, 3, 4]
 3 
 4 res = [i << i for i in range(1, 5)]
 5 print(res)
 6 
 7 '''
 8 li = []
 9 for i in range(1, 5):
10    li.append(i<<i)
11 print(li)
12 '''

2.带有判断条件推导式

 1 # 最终值 + 推导式 + 单项分支
 2 # [1,2,3,4,5,6,7,8,9,10,11] => [2,4,6,8,10]
 3 listvar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
 4 
 5 li = [i for i in range(1, 12) if i % 2 == 0]
 6 print(li)
 7 
 8 '''
 9 li = []
10 for i in range(1, 12):
11    if i % 2 == 0:
12       li.append(i)
13 
14 print(li)
15 '''

3.多循环推导式

1 list1 = ["陈根基", "黄伟峰", "崔建伟", "陈鹏", "五月天"]
2 list2 = ["陈梦洁", "张包钱", "陈红萍", "五十辉", "李一凡"]
3 
4 li = [i + "" + j for i in list1 for j in list2]
5 print(li)

4.带有判断条件的多循环推导式

 1 list1 = ["陈根基", "黄伟峰", "崔建伟", "陈鹏", "五月天"]
 2 list2 = ["陈梦洁", "张包钱", "陈红萍", "五十辉", "李一凡"]
 3 
 4 li = [i + j for i in list1 for j in list2 if list1.index(i) == list2.index(j)]
 5 print(li)
 6 
 7 '''
 8 li = []
 9 for i in list1:
10    for j in list2:
11       if list1.index(i) == list2.index(j):
12          li.append((j, i))
13 
14 print(li)
15 '''