Python语法之列表生成式的13个练习题
# 概述>列表生成式是Python内置的非常简单却强大的可以用来创建list的生成式。
Python 列表推导式是什么
>列表推导式是 Python 语言特有的一种语法结构,也可以看成是 Python 中一种独特的数据处理方式,
它在 Python 中用于 转换 和 过滤 数据。
其语法格式如下所示,其中 可省略。
```
变量 = [表达式 for 迭代变量 in 可迭代对象 ]
variable =
```
下面通过例题来对列表生成式进行深入的理解。
# 例题1:生成一个由1-10的平方组成的列表
>列表元素分别为,假设n=10
常规方法
```python
alist = []
for i in range(1, 11):
alist.append(i * i)
print(alist)
#
```
列表生成式
```python
alist =
print(alist)
#
```
# 例题2:接着上一个需求,要求返回的序列中不存在偶数项
常规方法
```python
alist = []
for i in range(1, 11):
if i % 2 != 0:
alist.append(i * i)
print(alist)
#
```
列表生成式
```python
alist =
print(alist)
#
```
# 例题3:字符串s1='ABC',字符串s2='123',要求:生成序列 A1 A2 A3 B1 B2 B3 C1 C2 C3
常规方法
```python
alist = []
for i in 'ABC':
for j in '123':
alist.append(i + j)
print(alist)
# ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
```
列表生成式
```python
alist =
print(alist)
# ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
```
# 例题4:将3×3的矩阵alist1转换成一个列表,且使该列表中包含偶数
常规方法
```python
alist1 = [,,]
alist2 = []
for item1 in alist1:
for item2 in item1:
if item2 % 2 == 0:
alist2.append(item2)
print(alist2)
#
```
列表生成式
```python
alist1 = [,,]
alist2 =
print(alist2)
#
```
# 例题5:if else 的情况
常规方法
```python
alist = []
for i in range(10):
if i % 2 == 0:
alist.append(i)
else:
alist.append(1)
print(alist)
#
```
列表生成式
```python
alist =
print(alist)
#
```
# 例题6:当我们想要得到需要循环才能实现的内容时:输出1-10的各个数的对应次方的值。1的1次方,2的2次方,3的3次方…
常规方法
```python
for i in range(1, 10):
print(i ** i)
# 1
# 4
# 27
# 256
# 3125
# 46656
# 823543
# 16777216
# 387420489
```
列表生成式
```python
print()
#
```
# 例题7:找出1-10之间所有的偶数,并返回一个列表(包含以这个偶数为半径的圆的面积)
常规方法
```python
import math
li = []
for i in range(1, 10):
if i % 2 == 0:
li.append(math.pi * i * i)
print(li)
#
```
列表生成式
```python
import math
print()
#
```
# 例题8:现在有一个字典d = {‘手机’: 2000, ‘电脑’: ‘4000’, ‘鼠标’: ‘100’ },如何 以 手机=2000,电脑=4000,鼠标=100的形式展示。
常规方法
```python
d = {'手机': 2000, '电脑': '4000', '鼠标': '100'}
li = []
for k, v in d.items():
li.append(k + "=" + str(v))
print(li)
# ['手机=2000', '电脑=4000', '鼠标=100']
```
列表生成式
```python
d = {'手机': 2000, '电脑': '4000', '鼠标': '100'}
print()
# ['手机=2000', '电脑=4000', '鼠标=100']
```
# 例题9:取出所有带a的列表
常规方法
```python
list1 = ['52pojie', 'OVVO', 'asd', 'sdf', 'freg', 'sfag', 'refv', 'aser', 'sdfr']
rs_list = []
for s in list1:
if 'a' in s:
rs_list.append(s)
print(rs_list)
# ['asd', 'sfag', 'aser']
```
列表生成式
```python
list1 = ['52pojie', 'OVVO', 'asd', 'sdf', 'freg', 'sfag', 'refv', 'aser', 'sdfr']
list2 =
print(list2)
# ['asd', 'sfag', 'aser']
```
# 例题10:多重循环
常规方法
```python
k = []
for i in range(4):
for j in range(2):
k.append((i, j))
print(k)
# [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 0), (3, 1)]
```
列表生成式
```python
print([(i, j) for i in range(4) for j in range(2)])
# [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 0), (3, 1)]
```
# 例题11:求a~d能组成的所有两字符的字符串
常规方法
```python
li = []
for x in range(97, 101):
for y in range(97, 101):
li.append(chr(x) + chr(y))
print(li)
# ['aa', 'ab', 'ac', 'ad', 'ba', 'bb', 'bc', 'bd', 'ca', 'cb', 'cc', 'cd', 'da', 'db', 'dc', 'dd']
```
列表生成式
```python
result =
print(result)
# ['aa', 'ab', 'ac', 'ad', 'ba', 'bb', 'bc', 'bd', 'ca', 'cb', 'cc', 'cd', 'da', 'db', 'dc', 'dd']
```
# 例题12:列表推导式可以实现矩阵的转置
常规方法
```python
a = [, , ]
li = []
for i in range(4):
l2 = []
for row in a:
l2.append(row)
li.append(l2)
print(li)
# [, , , ]
```
列表生成式
```python
a = [, , ]
at = [ for row in a] for i in range(4)]
print(at)
# [, , , ]
```
# 例题13:【自己动手】画Love组成的心型代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/940df3b5e31646e995cc36fdb0a851ff.png)
好了,通过以上的例子你应该对列表生成式有了大致的了解,请把以下【列表生成式】语法改成【常规方法】并发到评论区
```python
print('\n'.join([''.join([('OVVO'[(x-y) % len('OVVO')]if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ')for x in range(-30, 30)])for y in range(30, -30, -1)]))
``` 你好,请教一下,有没有一款软件可以在iPad上运行Python的代码,且可以做到电脑和iPad之间代码的自动同步?因为MATLAB可以,所以想问一下Python可以吗?百度目前没查出来 python的列表生成式能够花式组合出各种效果,非常适用于遍历操作,唯一的问题就是牺牲了部分可读性 谢谢楼主,我正在学python,正好有用 学习了很多 谢谢分享,学习了 挺好的,刚在整理 学习了,谢谢 先收藏,学习一下 MARK,有用,学习 感谢楼主的分享,本人正在学习python! 对我这样新手还是挺好的,感谢分享