zip
函数
zip()
函数可以把多个列表合并成一个列表,多个列表元素打包成元组。
<br/>
titles = ['t1', 't2', 't3']
hrefs = ['/t1.html', '/t2.html', '/t3.html']
for title, href in zip(titles, hrefs):
print(title, href)
# 结果如下
t1 /t1.html
t2 /t2.html
t3 /t3.html
<br/>
zip
很智能,如果列表长度不一样,会自行割舍,并不会报错
titles = ['t1', 't2', 't3']
hrefs = ['/t1.html', '/t2.html']
for title, href in zip(titles, hrefs):
print(title, href)
# 结果如下
t1 /t1.html
t2 /t2.html
<br/>
如果多个列表的数据顺序关联性很高,就可以使用 zip
函数进行打包,方便操作多个列表元素。
<br/>
Python 中的推导式
列表推导式
列表推导式可以很方便的构造列表,只用一行代码就能帮你进行列表的迭代及运算。语法如下:
[ 表达式 for 变量 in 列表 ] 或者 [ 表达式 for 变量 in 列表 if 条件 ]
nums = [1, 2, 3, 4, 5]
li = [num**2 for num in nums] # 把列表中的每个数平方一下
# 结果如下
# [1, 4, 9, 16, 25]
<br/>
10 以内的奇偶数
# 奇数
odd_num = [num for num in range(1, 11) if num % 2 == 1]
# [1, 3, 5, 7, 9]
# 偶数
even_num = [num for num in range(1, 11) if num % 2 == 0]
# [2, 4, 6, 8, 10]
<br/>
99 乘法表
# 99乘法表
t_99 = ['\t'.join([f'{col} * {row} = {row * col}' for col in range(1, row + 1)]) for row in range(1, 10)]
print('\n'.join(t_99))
# 结果如下
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
<br/>
上面的推导式如同下面的 for
循环
ret_li = []
for row in range(1, 10):
ret_li.append('\t'.join([f'{col} * {row} = {row * col}' for col in range(1, row + 1)]))
继续把 join
里面的推导式还原成 for
ret_li = []
for row in range(1, 10):
temp_li = []
for col in range(1, row + 1)
# 把每一行添加到临时列表中
temp_li.append(f'{col} * {row} = {row * col}')
ret_li.append('\t'.join(temp_li))
<br/>
字典推导式
自
Python2.7
以来,列表推导的概念就移植到了字典上,从而有了字典推导
<br/>
titles = ['t1', 't2', 't3']
hrefs = ['/t1.html', '/t2.html', '/t3.html']
news_dict = {title: href for title, href in zip(titles, hrefs)}
# 结果如下
{'t1': '/t1.html', 't2': '/t2.html', 't3': '/t3.html'}
<br/>
cookie 字符串转换成 cookie 信息字典
cookies_str = 'session_id=asdhasj; name=hui; age=18'
# 先按 `; ` 分割,再按 `=` 分割,索引0为字典的key,1位value
cookie_dict = {info.split('=')[0]: info.split('=')[1] for info in cookies_str.split('; ')}
# 结果如下
{'session_id': 'asdhasj', 'name': 'hui', 'age': '18'}
<br/>
集合推导式
集合的特点:元素不重复,所以集合推导式自带去重的功能。
li = [1, -1, 8, -8, 12]
s = {abs(i) for i in li}
# 结果如下
{8, 1, 12}
<br/>
生成器推导式
In [1]: g_num = (num for num in range(1000))
In [2]: g_num
Out[2]: <generator object <genexpr> at 0x00000211C2A118C8>
In [3]: next(g_num)
Out[3]: 0
In [4]: next(g_num)
Out[4]: 1
<br/>
尾语
✍ 用 Code 谱写世界,让生活更有趣。❤️
✍ 万水千山总是情,点赞再走行不行。❤️
✍ 码字不易,还望各位大侠多多支持。❤️