Python 常用小妙招(四)

简介: 函数可以把多个列表合并成一个列表,多个列表元素打包成元组。

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 谱写世界,让生活更有趣。❤️

✍ 万水千山总是情,点赞再走行不行。❤️

✍ 码字不易,还望各位大侠多多支持。❤️

相关文章
|
Python
python中的常用小技巧
python中的常用小技巧
110 0
|
API ice Python
Python 常用小妙招(一)
Python 常用小妙招(一)
Python 常用小妙招(二)
Python 常用小妙招(二)
|
索引 Python
Python 常用小妙招(三)
Python 常用小妙招(三)
|
弹性计算 Linux Python
有哪些常用的 Python 标准库?
有哪些常用的 Python 标准库?
|
1天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
1天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
27 5
|
1天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
12 0
|
1天前
|
测试技术 Python
Python模块化方式编程实践
【5月更文挑战第5天】Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
39 2