python基础:列表推导式、字典推导式、集合推导式

清疚 2022-03-29 03:55 519阅读 0赞

一、列表推导式
列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,
工作原理类似for循环,即可对得到的元素进行转换或者筛选。
列表推导式的基本格式:
变量名=[表达式 for 变量 in 列表] 或者
变量名= [表达式 for 变量 in 列表 if 条件]
执行流程:
遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。
或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。
练习1、将lst列表中每一个元素进行平方后放到一个新的列表

  1. 第一种方法
  2. lst = [1, 2, 3, 4, 5, 6, 7]
  3. new_lst = []
  4. for i in lst:
  5. num = i * i
  6. new_lst.append(num)
  7. print(new_lst) # [1, 4, 9, 16, 25, 36, 49]
  8. # 第二种方法:使用列表推导式:
  9. new_lst = [i * i for i in lst]
  10. print(new_lst) #[1, 4, 9, 16, 25, 36, 49]
  11. new_lst=[i**2 for i in lst]
  12. print(new_lst) #[1, 4, 9, 16, 25, 36, 49]
  13. # 第三种方法:使用函数表达式
  14. def square(num):
  15. return num*num
  16. new_lst=[square(i) for i in lst]
  17. print(new_lst) #[1, 4, 9, 16, 25, 36, 49]

2、找出列表中的奇数并以列表形式展示出来

  1. lst = [1, 2, 3, 4, 5, 6, 7, 8]
  2. # 普通方式
  3. new_lst = []
  4. for i in lst:
  5. if i % 2 == 1:
  6. new_lst.append(i)
  7. print(new_lst) #[1, 3, 5, 7]
  8. # 使用列表推导式
  9. new_lst = [i for i in lst if i % 2 == 1]
  10. print(new_lst) #[1, 3, 5, 7]

3、求列表中所有大于2的偶数进行平方计算

  1. lst = [1, 2, 3, 4, 5, 6, 7, 8]
  2. # 普通方式
  3. new_lst = []
  4. for i in lst:
  5. if i > 2 and i % 2 == 0:
  6. num = i * i
  7. new_lst.append(num)
  8. print(new_lst) #[16, 36, 64]
  9. # 使用列表推导式:
  10. new_lst = [i * i for i in lst if i > 2 and i % 2 == 0]
  11. print(new_lst) #[16, 36, 64]

4、将一个嵌套列表转化为一个一维空列表

  1. lst=[[1,2,3],[4,5,6],[7,8,9]]
  2. new_lst=[]
  3. for lst1 in lst:
  4. for i in lst1:
  5. new_lst.append(i)
  6. print(new_lst) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
  7. # 列表推导式
  8. new_lst=[i for lst1 in lst for i in lst1]
  9. print(new_lst) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

5:现在有一列表lst = [[1,2,3],[4,5,6],[7,8,9]]要求出1/4/7 和 1/5/9 元素,思考如何取出

  1. lst=[[1,2,3],[4,5,6],[7,8,9]]
  2. # 普通方式 取1,4,7
  3. new_lst=[]
  4. for i in range(len(lst)):
  5. ret=lst[i][0]
  6. new_lst.append(ret)
  7. print(new_lst) #[1, 4, 7]
  8. # 列表推导式:
  9. new_lst=[lst[i][0] for i in range(len(lst))]
  10. print(new_lst) #[1, 4, 7]
  11. # 取1,5,9
  12. lst=[[1,2,3],[4,5,6],[7,8,9]]
  13. new_lst=[]
  14. for i in range(len(lst)):
  15. ret=lst[i][i]
  16. new_lst.append(ret)
  17. print(new_lst) #[1, 5, 9]
  18. # 列表推导式
  19. new_lst=[lst[i][i] for i in range(len(lst))]
  20. print(new_lst) #[1, 5, 9]

二、字典推导式
字典推导式是该思想的延续,语法差不多,只不过产生的是字典而已。
字典推导式格式:
变量名={表达式 for 临时变量 in 可迭代内容}
练习1: 将字典中的key和value 进行对换。

  1. dic = {'k1': 20, 'k2': 30}
  2. # 变为dic={20:'k1',30,'k2'}
  3. # 普通方式
  4. new_dic = {}
  5. for i in dic:
  6. value = dic[i]
  7. new_dic[value] = i
  8. print(new_dic) #{20: 'k1', 30: 'k2'}
  9. #字典items()用法:
  10. for key, value in dic.items():
  11. new_dic[value] = key
  12. print(new_dic) #{20: 'k1', 30: 'k2'}
  13. # 字典推导式:
  14. new_dic = {value: key for key, value in dic.items()}
  15. print(new_dic) #{20: 'k1', 30: 'k2'}

三、集合推导式
集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]
练习1:计算列表中每个值的平方,自带去重功能

  1. squared = {x**2 for x in [1, -1, 2]}
  2. print(squared) #{1, 4}
  3. lst=[-2,3,-3,5]
  4. set1={i*i for i in lst}
  5. print(set1) #{9, 4, 25}

发表评论

表情:
评论列表 (有 0 条评论,519人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python列表推导

    列表推导式概念: 列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。 列表推导式书写形式: 1、list = \[Express for