iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >有哪些高级的Python技巧
  • 270
分享到

有哪些高级的Python技巧

2023-06-16 08:06:48 270人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“有哪些高级的python技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些高级的Python技巧”吧!1.通过多个键值将对象进行排序假设要对以下字典列表进行排序:peop

本篇内容主要讲解“有哪些高级的python技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些高级的Python技巧”吧!

1.通过多个键值将对象进行排序

假设要对以下字典列表进行排序

people = [ { 'name': 'John', "age": 64 }, { 'name': 'Janet', "age": 34 }, { 'name': 'Ed', "age": 24 }, { 'name': 'Sara', "age": 64 }, { 'name': 'John', "age": 32 }, { 'name': 'Jane', "age": 34 }, { 'name': 'John', "age": 99 }, ]

不仅要按名字或年龄对其进行排序,还要将两个字段同时进行排序。在sql中,会是这样的查询:

SELECT * FROM people ORDER by name, age

实际上,这个问题的解决方法可以非常简单,Python保证sort函数提供了稳定的排序顺序,这也意味着比较相似的项将保留其原始顺序。要实现按名字和年龄排序,可以这样做:

import operator people.sort(key=operator.itemgetter('age')) people.sort(key=operator.itemgetter('name'))

要注意如何反转顺序。首先按年龄分类,然后按名字分类,使用operator.itemgetter()从列表中的每个字典中获取年龄和名字字段,这样你就会得到想要的结果:

[ {'name': 'Ed', 'age': 24}, {'name': 'Jane', 'age': 34}, {'name': 'Janet','age': 34}, {'name': 'John', 'age': 32}, {'name': 'John', 'age': 64}, {'name': 'John', 'age': 99}, {'name': 'Sara', 'age': 64} ]

名字是主要排序项,如果姓名相同,则以年龄排序。因此,所有John都按年龄分组在一起。

2.数据类别

自3.7版之后,Python开始能提供数据类别。比起常规类或其他替代方法(如返回多个值或字典),它有着更多优点:

  • 数据类需要很少的代码

  • 可以比较数据类,因为 __eq__ 可以实现此功能

  • 数据类需要类型提示,减少了发生错误的可能性

  • 可以轻松打印数据类以进行调试,因为__repr__可以实现此功能

这是一个工作中的数据类示例:

from dataclasses import dataclass                   @dataclass                  classCard:                      rank: str                      suit: str                        card=Card("Q", "hearts")                   print(card == card)                  # True                   print(card.rank)                  # 'Q'                   print(card)                  Card(rank='Q', suit='hearts')

3.列表推导

列表推导可以在列表填写里代替讨厌的循环,其基本语法为

[ expression for item in list if conditional ]

来看一个非常基本的示例,用数字序列填充列表:

mylist = [i for i inrange(10)]                 print(mylist)                 # [0, 1, 2, 3,4, 5, 6, 7, 8, 9]

因为可以使用表达式,所以你还可以进行一些数学运算:

squares = [x**2for x inrange(10)]                 print(squares)                 # [0, 1, 4, 9,16, 25, 36, 49, 64, 81]

甚至能调用外部函数:

defsome_function(a):                                 return (a +5) /2                                                             my_fORMula= [some_function(i) for i inrange(10)]                             print(my_formula)                             # [2.5, 3.0,3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0]

最后,可以使用if函数来筛选列表。在这种情况下,只保留可被2除的值:

filtered = [i for i inrange(20) if i%2==0]                print(filtered)                # [0, 2, 4, 6,8, 10, 12, 14, 16, 18]

4.检查对象的内存使用情况

使用sys.getsizeof()可以检查对象的内存使用情况:

import sys                   mylist =range(0, 10000)           print(sys.getsizeof(mylist))           # 48

为什么这个庞大的列表只有48个字节?这是因为range函数返回的类表现为列表。与使用实际的数字列表相比,数序列的存储效率要高得多。我们可以通过列表推导来创建相同范围内的实际数字列表:

import sys                   myreallist = [x for x inrange(0, 10000)]           print(sys.getsizeof(myreallist))           # 87632

通过使用sys.getsizeof(),我们可以了解更多关于Python和内存使用情况的信息。

5.查找最频繁出现的值

要查找列表或字符串中最频繁出现的值:

test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]      print(max(set(test), key = test.count))      # 4
  • max()将返回列表中的最大值。key参数采用单个参数函数自定义排序顺序,在本例中为test.count,该函数适用于迭代器上的每个项目

  • test.count是list的内置功能。它接受一个参数,并计算该参数的出现次数。因此test.count(1)将返回2,而test.count(4)将返回4。

  • set(test)返回test中的所有唯一值,所以{1、2、3、4}

那么在这一行代码将接受test的所有唯一值,即{1、2、3、4}。接下来,max将对其应用list.count 函数并返回最大值。

还有一种更有效的方法:

from collections import Counter Counter(test).most_common(1) # [4: 4]

6.属性包

你可以使用attrs代替数据类,选择attrs有两个原因:

  • 使用的Python版本高于3.7

  • 想要更多功能

Theattrs软件包支持所有主流Python版本,包括CPython  2.7和PyPy。一些attrs可以提供验证器和转换器这种超常规数据类。来看一些示例代码:

@attrs           classPerson(object):               name =attrib(default='John')               surname =attrib(default='Doe')               age =attrib(init=False)               p =Person()           print(p)           p=Person('Bill', 'Gates')           p.age=60           print(p)                   # Output:           #   Person(name='John', surname='Doe',age=NOTHING)           #   Person(name='Bill', surname='Gates', age=60)

实际上,attrs的作者已经在使用引入数据类的PEP了。数据类被有意地保持得更简单、更容易理解,而attrs 提供了可能需要的所有特性。

7.合并字典(Python3.5+)

dict1 = { 'a': 1, 'b': 2 }         dict2= { 'b': 3, 'c': 4 }         merged= { **dict1, **dict2 }         print (merged)         # {'a': 1, 'b':3, 'c': 4}

如果有重叠的键,第一个字典中的键将被覆盖。在Python 3.9中,合并字典变得更加简洁。上面Python 3.9中的合并可以重写为:

merged = dict1 | dict2

8.返回多个值

Python中的函数在没有字典,列表和类的情况下可以返回多个变量,它的工作方式如下:

defget_user(id):                        # fetch user from database                        # ....                        return name, birthdate                   name, birthdate =get_user(4)

这是有限的返回值,但任何超过3个值的内容都应放入一个(数据)类。

到此,相信大家对“有哪些高级的Python技巧”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 有哪些高级的Python技巧

本文链接: https://www.lsjlt.com/news/282916.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 有哪些高级的Python技巧
    本篇内容主要讲解“有哪些高级的Python技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些高级的Python技巧”吧!1.通过多个键值将对象进行排序假设要对以下字典列表进行排序:peop...
    99+
    2023-06-16
  • JavaScript的高级技巧有哪些
    本篇内容介绍了“JavaScript的高级技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 安...
    99+
    2024-04-02
  • CSS的高级技巧有哪些
    CSS的高级技巧有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。◆使用 :not() 在菜单上应用/取...
    99+
    2024-04-02
  • CSS高级技巧有哪些
    小编给大家分享一下CSS高级技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 黑白图像这段代码会让你的彩色照片显示为...
    99+
    2024-04-02
  • 高级CSS技巧有哪些
    今天小编给大家分享一下高级CSS技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。精灵图1. 为什么需要精灵图?客户端...
    99+
    2023-07-04
  • Python开发中有哪些高级技巧
    这期内容当中小编将会给大家带来有关Python开发中有哪些高级技巧,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python 开发中有哪些高级技巧这是知乎上一个问题,我总结了一些常见的技巧在这里,可能谈不...
    99+
    2023-06-16
  • python sort、sorted高级排序技巧有哪些
    今天小编给大家分享一下python sort、sorted高级排序技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • 有哪些高级的Python列表使用技巧
    本篇内容介绍了“有哪些高级的Python列表使用技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使用Python过滤列表1.使用Fil...
    99+
    2023-06-16
  • Python数组操作有哪些高级技巧?
    Python是一种功能强大的编程语言,广泛应用于数据科学和机器学习领域。在Python中,数组是一种常见的数据结构,它可以存储多个元素,并且可以进行各种操作。本文将介绍Python数组操作中的一些高级技巧。 使用numpy库 Numpy...
    99+
    2023-10-17
    数组 laravel spring
  • 使用CSS的高级技巧有哪些
    这篇文章给大家分享的是有关使用CSS的高级技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.使用CSS复位CSS复位可以在不同的浏览器上保持一致的样式风格。你可以使用C...
    99+
    2024-04-02
  • CSS高级使用技巧有哪些
    这篇文章主要为大家展示了“CSS高级使用技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS高级使用技巧有哪些”这篇文章吧。 CSS 如何将一张彩...
    99+
    2024-04-02
  • CSS中的高级使用技巧有哪些
    这篇文章主要为大家展示了“CSS中的高级使用技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS中的高级使用技巧有哪些”这篇文章吧。 使用 :not...
    99+
    2024-04-02
  • Python中有哪些高效的技巧
    本篇内容主要讲解“Python中有哪些高效的技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中有哪些高效的技巧”吧!反转列表Python 中通常有两种反转列表的方法:切片或 rev...
    99+
    2023-07-06
  • Python有哪些高效率技巧
    本篇内容主要讲解“Python有哪些高效率技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python有哪些高效率技巧”吧!清理字符串输入清理用户输入的问题,几乎适用于我们可能编写的每个程序。...
    99+
    2023-06-16
  • Python开发的高级技巧分别是哪些
    Python开发的高级技巧分别是哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我列出几个Python高级技巧:1. contextmanager写Python代码的时候经常...
    99+
    2023-06-17
  • 批处理的高级运用技巧有哪些
    这篇文章主要为大家展示了“批处理的高级运用技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理的高级运用技巧有哪些”这篇文章吧。批处理的高级运用1 一.简单批处理内部命令  ...
    99+
    2023-06-09
  • linux下高级SSH安全技巧有哪些
    本篇文章给大家分享的是有关linux下高级SSH安全技巧有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SSH服务器配置文件是/etc/ssh/sshd_conf。在你对它...
    99+
    2023-06-13
  • DOS批处理编程的高级技巧有哪些
    DOS批处理编程的高级技巧有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、交互界面设计没啥说的,看看高手设计的菜单界面吧:@echo offclstitle&...
    99+
    2023-06-08
  • JavaScript中常用的简洁高级技巧有哪些
    这篇文章主要为大家展示了“JavaScript中常用的简洁高级技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中常用的简洁高级技巧有...
    99+
    2024-04-02
  • Golang的基础知识和高级技巧有哪些
    这篇“Golang的基础知识和高级技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang的基础知识和高级技巧有...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作