Skip to content

Commit e6aa1bb

Browse files
committed
add 13_Day_List_comprehension Chinese support
1 parent 763e78b commit e6aa1bb

File tree

1 file changed

+208
-0
lines changed

1 file changed

+208
-0
lines changed

Chinese/13_list_comprehension.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
<div align="center">
2+
<h1>Python 30 天挑战:第 13 天 - 列表推导式</h1>
3+
<a class="header-badge" target="_blank" href="https://www.linkedin.com/in/asabeneh/">
4+
<img src="https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social">
5+
</a>
6+
<a class="header-badge" target="_blank" href="https://twitter.com/Asabeneh">
7+
<img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/asabeneh?style=social">
8+
</a>
9+
10+
<sub>作者:
11+
<a href="https://www.linkedin.com/in/asabeneh/" target="_blank">Asabeneh Yetayeh</a><br>
12+
<small>第二版: 2021 年 7 月</small>
13+
</sub>
14+
15+
</div>
16+
</div>
17+
18+
[<< 第 12 天](../12_Day_Modules/12_modules.md) | [第 14 天>>](../14_Day_Higher_order_functions/14_higher_order_functions.md)
19+
20+
![30DaysOfPython](../images/[email protected])
21+
22+
- [📘 第 13 天](#📘-第-13-天)
23+
- [列表推导式](#列表推导式)
24+
- [Lambda 函数](#lambda函数)
25+
- [创建 Lambda 函数](#创建-lambda-函数)
26+
- [Lambda 函数在另一个函数中](#lambda-函数在另一个函数中)
27+
- [💻 练习:第 13 天](#💻-练习第-13-天)
28+
29+
# 📘 第 13 天
30+
31+
## 列表推导式
32+
33+
在 Python 中,列表推导式是一种从序列中创建列表的简洁方式。它是创建新列表的简短方法。列表推导式比使用 _for_ 循环处理列表快得多。
34+
35+
```py
36+
# 语法
37+
[i for i in iterable if 表达式]
38+
```
39+
40+
**例子: 1**
41+
42+
例如,如果你想将字符串转换为字符列表。你可以使用几种方法。我们来看看其中的一些:
43+
44+
```py
45+
# 一种方法
46+
language = 'Python'
47+
lst = list(language) # 将字符串转换为列表
48+
print(type(lst)) # list
49+
print(lst) # ['P', 'y', 't', 'h', 'o', 'n']
50+
51+
# 第二种方法: 列表推导式
52+
lst = [i for i in language]
53+
print(type(lst)) # list
54+
print(lst) # ['P', 'y', 't', 'h', 'o', 'n']
55+
```
56+
57+
**例子: 2**
58+
59+
例如,如果你想生成一个数字列表
60+
61+
```py
62+
# 生成数字
63+
numbers = [i for i in range(11)] # 生成从0到10的数字
64+
print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
65+
66+
# 也可以在迭代过程中进行数学运算
67+
squares = [i * i for i in range(11)]
68+
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
69+
70+
# 还可以生成元组列表
71+
numbers = [(i, i * i) for i in range(11)]
72+
print(numbers) # [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
73+
```
74+
75+
**例子: 3**
76+
77+
列表推导式可以与 if 表达式结合使用
78+
79+
```py
80+
# 生成偶数
81+
even_numbers = [i for i in range(21) if i % 2 == 0] # 生成从0到21的偶数列表
82+
print(even_numbers) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
83+
84+
# 生成奇数
85+
odd_numbers = [i for i in range(21) if i % 2 != 0] # 生成从0到21的奇数列表
86+
print(odd_numbers) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
87+
88+
# 过滤数字:让我们从下面的列表中过滤出正偶数
89+
numbers = [-8, -7, -3, -1, 0, 1, 3, 4, 5, 7, 6, 8, 10]
90+
positive_even_numbers = [i for i in range(21) if i % 2 == 0 and i > 0]
91+
print(positive_even_numbers) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
92+
93+
# 扁平化三维数组
94+
list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
95+
flattened_list = [number for row in list_of_lists for number in row]
96+
print(flattened_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
97+
```
98+
99+
## Lambda 函数
100+
101+
Lambda 函数是没有名字的小匿名函数。它可以接受任意数量的参数,但只能有一个表达式。Lambda 函数类似于 JavaScript 中的匿名函数。当我们想在另一个函数中编写匿名函数时,需要它。
102+
103+
### 创建 Lambda 函数
104+
105+
要创建一个 lambda 函数,我们使用 _lambda_ 关键字,然后是一个或多个参数,再然后是一个表达式。请参阅下面的语法和示例。Lambda 函数不用 return,但它会隐式地返回表达式。
106+
107+
```py
108+
# 语法
109+
x = lambda param1, param2, param3: param1 + param2 + param3
110+
print(x(arg1, arg2, arg3))
111+
```
112+
113+
**示例:**
114+
115+
```py
116+
# 命名函数
117+
def add_two_nums(a, b):
118+
return a + b
119+
120+
print(add_two_nums(2, 3)) # 5
121+
122+
# 让我们将上述函数更改为 lambda 函数
123+
add_two_nums = lambda a, b: a + b
124+
print(add_two_nums(2, 3)) # 5
125+
126+
# 自调用 lambda 函数
127+
print((lambda a, b: a + b)(2, 3)) # 5
128+
129+
square = lambda x: x ** 2
130+
print(square(3)) # 9
131+
cube = lambda x: x ** 3
132+
print(cube(3)) # 27
133+
134+
# 多个变量
135+
multiple_variable = lambda a, b, c: a ** 2 - 3 * b + 4 * c
136+
print(multiple_variable(5, 5, 3)) # 22
137+
```
138+
139+
### Lambda 函数在另一个函数中
140+
141+
在另一个函数中使用 lambda 函数。
142+
143+
```py
144+
def power(x):
145+
return lambda n: x ** n
146+
147+
cube = power(2)(3) # 函数 power 现在需要两个单独的括号中的参数
148+
print(cube) # 8
149+
two_power_of_five = power(2)(5)
150+
print(two_power_of_five) # 32
151+
```
152+
153+
🌕 继续保持良好的工作。保持动力,天空才是你的极限!你已经完成了第 13 天的挑战,你已经向伟大的目标迈出了 13 步。现在为你的大脑和肌肉来做一些练习。
154+
155+
## 💻 练习: 第 13 天
156+
157+
1. 使用列表推导式过滤出列表中的负数和零:
158+
```py
159+
numbers = [-4, -3, -2, -1, 0, 2, 4, 6]
160+
```
161+
2. 将以下列表中的列表展平为一维列表:
162+
163+
```py
164+
list_of_lists = [[[1, 2, 3]], [[4, 5, 6]], [[7, 8, 9]]]
165+
166+
输出:
167+
[1, 2, 3, 4, 5, 6, 7, 8, 9]
168+
```
169+
170+
3. 使用列表推导式创建以下元组列表:
171+
```py
172+
[(0, 1, 0, 0, 0, 0, 0),
173+
(1, 1, 1, 1, 1, 1, 1),
174+
(2, 1, 2, 4, 8, 16, 32),
175+
(3, 1, 3, 9, 27, 81, 243),
176+
(4, 1, 4, 16, 64, 256, 1024),
177+
(5, 1, 5, 25, 125, 625, 3125),
178+
(6, 1, 6, 36, 216, 1296, 7776),
179+
(7, 1, 7, 49, 343, 2401, 16807),
180+
(8, 1, 8, 64, 512, 4096, 32768),
181+
(9, 1, 9, 81, 729, 6561, 59049),
182+
(10, 1, 10, 100, 1000, 10000, 100000)]
183+
```
184+
4. 将以下列表展平成一个新列表:
185+
```py
186+
countries = [[('芬兰', '赫尔辛基')], [('瑞典', '斯德哥尔摩')], [('挪威', '奥斯陆')]]
187+
输出:
188+
[['芬兰', '汇编', '赫尔辛基'], ['瑞典', 'SWE', '斯德哥尔摩'], ['挪威', 'NOR', '奥斯陆']]
189+
```
190+
5. 将以下列表转换为字典列表:
191+
```py
192+
countries = [[('芬兰', '赫尔辛基')], [('瑞典', '斯德哥尔摩')], [('挪威', '奥斯陆')]]
193+
输出:
194+
[{'国家': '芬兰', '城市': '赫尔辛基'},
195+
{'国家': '瑞典', '城市': '斯德哥尔摩'},
196+
{'国家': '挪威', '城市': '奥斯陆'}]
197+
```
198+
6. 将以下列表转换为连接字符串的列表:
199+
```py
200+
names = [[('Asabeneh', 'Yetayeh')], [('David', 'Smith')], [('Donald', 'Trump')], [('Bill', 'Gates')]]
201+
输出:
202+
['Asabeneh Yetayeh', 'David Smith', 'Donald Trump', 'Bill Gates']
203+
```
204+
7. 编写一个 lambda 函数,可以求解线性函数的斜率或 y 截距。
205+
206+
🎉 祝贺你!🎉
207+
208+
[<< 第 12 天](../12_Day_Modules/12_modules.md) | [第 14 天>>](../14_Day_Higher_order_functions/14_higher_order_functions.md)

0 commit comments

Comments
 (0)