【python】30_高级特性之列表、字典、集合生成式

生成式、生成器、迭代器、可迭代对象的关系如下图:
在这里插入图片描述

1.列表生成式

列表生成式就是一个用来生成列表的特定语法形式的表达式。是Python提供的一种生 成列表的简洁形式, 可快速生成一个新的list。


普通的语法格式:[exp for iter_var in iterable]
带过滤功能语法格式: [exp for iter_var in iterable if_exp]
循环嵌套语法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

(需求1)接收变量k,a,b。之前我们的做法是:
在这里插入图片描述
列表生成式可以把上边12、13、14三行语句,用一行代码实现(第18行)
在这里插入图片描述

*(需求2)生成一个列表,列表元素分别为[1 * 1, 2 * * 2, 3 * * 3, 4 * * 4… n * * n]。**之前做法:
在这里插入图片描述
列表生成式做法:
在这里插入图片描述

通过上边两个例子,我们可以总结出来列表生成式的语法是:
[experssion for item in 序列 if 判断语句]

(需求3)找出1~10之间的所有的偶数
在这里插入图片描述
最简单的作法:
在这里插入图片描述
(需求4)找出1~100之间所有的质数

判断num是否为质数,如果是质数,返回True,否则返回False
什么是质数?
    只能被1和本身整除的数,就是质数
    方法:
    依次判断num能被(2,num)整除
    如果能被其中其中一个数整除,不是质数
    当循环结束,都没有发现能被整除的数,那么就是质数

代码实现如下:
在这里插入图片描述

执行结果如下:
(0、1不是质数)
在这里插入图片描述
(需求5)将列表中所有内容都变成小写
在这里插入图片描述
在这里插入图片描述
(需求6)找出/var/log目录中,所有以.log结尾的文件名或者目录名
在这里插入图片描述

(需求7)找出1~10之间所有偶数, 并且返回一个列表,(包含以这个偶数为半径的圆的面积)
最先想到以及最简单的做法:
在这里插入图片描述
列表生成式的做法:
在这里插入图片描述
函数做法:
在这里插入图片描述

2.列表生成式变形-for循环嵌套

需求:将3x3的矩阵转换成一堆数组
[
[1,2,3],
[4,5,6],
[7,8,9]
]
输出[1,2,3,4,5,6,7,8,9]

之前的做法:
在这里插入图片描述

列表生成式做法:
在这里插入图片描述使用内置方法:
在这里插入图片描述

3.列表生成式和三元运算符结合

需求:找出1~100之间所有奇数, 并且返回一个列表。如果能被3整除, 返回返回该数的平方,否则返回该数的三次方 。
在这里插入图片描述
如果列表生成式和三元运算符结合在一起, if语句放前面

4.字典生成式

(需求1)假设有20个学生,学生分数在60~100之间,筛选出成绩在90分以上的学生
之前的做法:
在这里插入图片描述
字典生成式做法:
24行这一句代码实现上图12-16
26行这一句代码实现上图18-22
在这里插入图片描述
(需求2)将所有的key值变为大写
普通做法:
在这里插入图片描述
字典生成式做法:
在这里插入图片描述
(需求3)大小写key值合并(value值相加),统一以小写输出
普通做法:
在这里插入图片描述
字典生成式做法:

d = dict(a=2, b=1, c=2, B=9, A=10)
print({k.lower(): d.get(k.lower(), 0) + d.get(k.upper(), 0) for k in d})

或者
在这里插入图片描述这里解释一下:== d.get(key.lower(), 0)==, 如果key值不存在,默认返回0;

5.集合生成式

print({i ** 2 for i in {1, 2, 3}})

在这里插入图片描述

print({i ** 2 for i in {1, 2, 3, 9, 12} if i % 3 == 0})

输出结果为什么?????
在这里插入图片描述

在这里插入图片描述
因为集合是无序的呀,小傻瓜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 字典生成(Dictionary Comprehension)可以用一种简洁的语法来创建字典。 基本语法如下: ```python {key:value for key, value in iterable} ``` 其中,`key` 和 `value` 分别表示字典中的键和值,`iterable` 是一个可迭代对象,可以是列表、元组、集合等。通过遍历 `iterable` 中的元素,将每个元素赋值给 `key` 和 `value`,从而生成一个字典。 例如,我们可以通过以下代码创建一个字典,其中键为 1~5 的数字,值为对应数字的平方: ```python d = {i: i**2 for i in range(1, 6)} print(d) ``` 输出结果为: ``` {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} ``` 除了上述基本语法外,字典生成还可以添加条件表达。例如,我们可以通过以下代码创建一个字典,其中键为 1~10 的数字,值为对应数字的平方,但只保留值为偶数的项: ```python d = {i: i**2 for i in range(1, 11) if i % 2 == 0} print(d) ``` 输出结果为: ``` {2: 4, 4: 16, 6: 36, 8: 64, 10: 100} ``` ### 回答2: Python字典生成是一种快速简洁地生成字典的方法,类似于列表生成字典生成的基本语法为: {key_expression: value_expression for item in iterable if condition} 其中,key_expression表示生成字典的键的表达,value_expression表示生成字典的值的表达,item表示可迭代对象的元素,iterable表示可迭代对象,condition表示一个选择条件。 与列表生成类似,字典生成可以包含多个for循环和if条件语句。生成字典中的键和值是通过表达计算得到的。 下面是一个例子: 假设有一个列表numbers = [1, 2, 3, 4, 5],我们想生成一个字典字典的键是列表中的数字,值是数字的平方。 我们可以使用字典生成来实现: numbers_dict = {num: num**2 for num in numbers} 执行以上代码后,会得到一个字典numbers_dict,其中包含如下键值对: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 这个字典的键为列表numbers中的数字,值为对应数字的平方。 使用字典生成可以简洁地生成字典,并且可以根据需要添加多个for循环和if条件语句来筛选和计算生成的键值对。 ### 回答3: Python 字典生成是一种简洁而又高效的创建字典的方法。它类似于列表生成,但使用花括号 {} 来表示字典字典生成的语法为: {key: value for key, value in iterable} 其中,key 是字典中的键,value 是对应的值,iterable 是一个可迭代对象,例如列表、元组、集合等。 我们可以通过迭代 iterable 中的元素,并使用 key 和 value 初始化字典中的对应键值对。字典生成在遍历 iterable 中的元素时非常方便,可以根据需要自定义键值对的规则。 下面是一个具体的示例: numbers = [1, 2, 3, 4, 5] squared_dict = {num: num**2 for num in numbers} print(squared_dict) 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 在上面的示例中,我们通过一个列表生成创建了一个字典。遍历 numbers 列表中的元素,为每个元素生成一个键值对,其中键为元素本身,值为元素的平方。 除了简单的映射规则外,字典生成还可以通过添加条件语句实现更为复杂的筛选和转换。 例如: numbers = [1, 2, 3, 4, 5] even_squares = {num: num**2 for num in numbers if num % 2 == 0} print(even_squares) 输出: {2: 4, 4: 16} 在这个例子中,只有当元素为偶数时,才将其平方添加到字典中。 通过使用字典生成,我们可以以一种简洁且易读的方来创建和操作字典,提高代码的可读性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值