python学习指南—Python 进阶(Python Cookbook)

Posted 诗雨时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习指南—Python 进阶(Python Cookbook)相关的知识,希望对你有一定的参考价值。

系列文章目录

Python数据科学家养成计划(Python学习指南)


文章目录


前言

随着人工智能的不断发展,数据科学相关技术也越来越重要,很多人都开启了学习数据科学相关知识体系的学习之旅,本文就以 《Python CookBook》一书为基础,结合自己10多年来在工作中遇到的实际代码场景,介绍了数据科学中 Python 的进阶内容。

一、数据结构和算法

Python内置了许多非常有用的数据结构,比如列表(list)、集合(set)以及字典(dictionary)。就绝大部分情况而言,我们可以直接使用这些数据结构。但是,通常我们还需要考虑比如搜索、排序、排列以及筛选等这一类常见的问题。因此,本章的目的就是来讨论常见的数据结构和同数据有关的算法。此外,在 collections 模块中也包含了针对各种数据结构的解决方案。

1. 将序列分解为单独的变量

问题

现在有一个包含 N 个元素的元组或序列,怎样将它里面的值分解并赋值给 N 个单独的变量?

解决方案

任何序列(或可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求是变量的总数和结构要与序列相吻合。

示例代码(字符串 string):

>>> data = "Hello"
>>> a, b, c, d, e = data
>>> a
H
>>> b
e
>>> c
l
>>> d
l
>>> e
o

示例代码(元组 tuple):

>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5

示例代码(集合 set):不建议使用此方法,因为集合(set)是一个无序的不重复元素序列,实际得到的结果和我们想要的结果会存在偏差。

>>> data = set(["ACME", 50, 91.1, (2022, 5, 3)])
>>> name, shares, price, date = data
>>> name
(2022, 5, 3)
>>> shares
50
>>> price
91.1
>>> date
(2022, 12, 21)

示例代码(列表 list):

>>> data = ["ACME", 50, 91.1, (2022, 5, 3)]
>>> name, shares, price, date = data
>>> name
ACME
>>> shares
50
>>> price
91.1
>>> date
(2022, 12, 21)

示例代码(字典 dictionary):

>>> data = "Name": "mahua", "Age": 18, "Gender": "male"
>>> name, age, gender = data.items()
>>> name
('Name', 'mahua')
>>> age
('Age', 18)
>>> gender
('Gender', 'male')

示例代码(迭代器 iterator):

>>> data = iter(["ACME", 50, 91.1, (2022, 5, 3)])
>>> name, shares, price, date = data
>>> name
ACME
>>> shares
50
>>> price
91.1
>>> date
(2022, 5, 3)

示例代码(生成器 generator):

def generator(): 
    for i in ["ACME", 50, 91.1, (2022, 5, 3)]:
        yield i
f = generator() # f 是一个迭代器,由生成器返回生成

>>> name, shares, price, date = f
>>> name
ACME
>>> shares
50
>>> price
91.1
>>> date
(2022, 5, 3)

如果元素的数量不匹配,将得到一个错误提示。

示例代码(元组 tuple):

>>> p = (4, 5)
>>> x, y, z = p
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [1], in <cell line: 2>()
      1 p = (4, 5)
----> 2 x, y, z = p

ValueError: not enough values to unpack (expected 3, got 2)

讨论

当做分解操作时,有时候可能想丢弃某些特定的值。Python 并没有提供特殊的语法来实现这一点,但是通常可以选择一个用不到的变量名,以此来作为要丢弃的值的名称。(注意:必须确保选择的变量名没有在其他地方用到过。

示例代码(列表 list):

>>> data = ["ACME", 50, 91.1, (2022, 5, 3)]
>>> _, shares, price, _ = data
>>> shares
50
>>> price
91.1
>>> data = ["ACME", 50, 91.1, (2022, 5, 3)]
>>> name, shares, *_ = data    # 注意,使用 *(星号) 表达式时,需要确定 头部/尾部 变量名
>>> name
ACME
>>> shares
50
>>> data = ["ACME", 50, 91.1, (2022, 5, 3)]
>>> name, *_, date = data    # # 注意,使用 *(星号) 表达式时,需要确定 头部/尾部 变量名
>>> name
ACME
>>> date
(2022, 5, 3)

以上是关于python学习指南—Python 进阶(Python Cookbook)的主要内容,如果未能解决你的问题,请参考以下文章

一文搞定深度学习建模预测全流程(Python)

Python进阶3

python进阶教程 中文pdf课件版(共10课)20MB高清下载

Python学习之路

Python学习之路

Python 进阶都要学啥?