1.解压序列赋值给多个变量

p = (4, 5, 6)
x, y , z = p # x = 4, y = 5, z = 6 若可迭代对象超过变量个数,会抛出ValueError

用处:可以解压赋值任何可迭代对象(包括列表,元组,字符串,文件对象,迭代器,生成器)

2.解压可迭代对象赋值多个变量

p = (4, 5, 6)
x, *y = p # x = 4, y = [5, 6] 此方法可防止ValueError,y变量永远是列表类型,*y可以在任意位置

用处:

1.专门用于解压不确定个数或者任意个数元素的可迭代对象(如:第一个元素后都是相同含义的元素)设计的。

2.可用于字符串分割:x, *y, z = 'x:x:x:x:x'.split(':')  # 小知识:如果想解压一些元素后抛弃可命名为_ , ign(*_, *ign)

3.保留最后N个元素

使用deque可以在迭代操作时只保留有限的几行元素的历史记录

from collections import deque

q = deque(maxlen=5)  # 构造函数会新建一个固定大小的队列,新元素加入已满队列时会移除最老元素
q.append(1) # 时间复杂度O(1)
q.appendleft(1) # 时间复杂度O(1)
q.pop() # 时间复杂度O(1)

4.查找最大或最小的N个元素

怎么从一个集合中获取最大或者最小的N个元素列表

import heapq
nums = [1, 2, 4, 8, -1, 0, -3]
heapq.nlargest(3, nums) # [8, 4, 2]
heapq.nsmallest(3, nums) # [-3, -1, 0] portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
]
cheap = heapq.nsmallest(3, portfolio, key = lambda s: s['price'])
expensive = heapq.nlargest(3, portfolio, key = lambda s: s['price']) # price的值进行比较

作用:将列表变为小顶堆:heapq.heapify(list(nums))

 

python高级语法1的更多相关文章

  1. Python高级语法之:一篇文章了解yield与Generator生成器

    Python高级语法中,由一个yield关键词生成的generator生成器,是精髓中的精髓.它虽然比装饰器.魔法方法更难懂,但是它强大到我们难以想象的地步:小到简单的for loop循环,大到代替多 ...

  2. Python高级语法总结

    1.Python面向对象 创建类 使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,如下实例: class ClassName: '类的帮助信息' #类文档字符串 class_s ...

  3. 网络编程-Python高级语法-装饰器

    理论:装饰器就是运行一个函数之前首先运行装饰器函数,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数 ...

  4. 网络编程-Python高级语法-property属性

    知识点: 一.什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法,Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最 ...

  5. 网络编程-Python高级语法-GIL全局解释器锁

    知识点:GIL全局解释器锁其实和Python没有任何关系,是由于当初编写Python解释器时留下的,它只对多线程有影响,GIL保证同一时刻只有一个线程在运行,即使是多核配置电脑,同一时刻也只会让一个线 ...

  6. python 高级语法

    #coding:utf-8 #定义一个装饰器函数 def doc_func(func): #包裹函数(闭包) def warpfunc(): #做一些额外的事情 print "%s call ...

  7. python高级语法进阶

    python中几个比较难懂概念进阶. 迭代器 实现了迭代器协议的容器对象,基于如下两个方法: __next__:返回容器的下一个元素 __iter__:返回迭代器本身 由此可见,如果要自定义一个迭代器 ...

  8. Python高级语法-贯彻回顾-元类(4.99.1)

    @ 目录 1.为什么要掌握元类 2.正文 关于作者 1.为什么要掌握元类 在django中编写models的时候遇到了元类的相关操作 并且在mini-web框架编写的时候也遇到了相关的问题 意识到深入 ...

  9. Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

    @ 目录 1.说明 2.代码 关于作者 1.说明 python中属性:类属性,实例属性 方法:类方法,实例方法,静态方法 想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面 静态方法 ...

  10. 网络编程-Python高级语法-闭包

    什么叫闭包?通俗来说就是函数里嵌套函数,从表现形式来看,内部函数引用外部函数的作用域里的变量,那么内部函数就称为闭包 举例说明: 1.闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境 ...

随机推荐

  1. STM32 IAP 升级功能

    IAP In Application Programming 可通过USB,CAN,UART,I2C,SPI等接口实现 IAP流程 Bootloader程序:接收升级程序,更新到flash指定地址:跳 ...

  2. switch...case...语句分析(大表跟小表何时产生)

    一.switch...case...的格式 switch(表达式) { case 常量表达式1: 语句; break; case 常量表达式2: 语句; break; case 常量表达式3: 语句; ...

  3. MySQL 部署分布式架构 MyCAT (四)

    分片(水平拆分) 2.取模分片(mod-long) cd /data/mycat/conf cp schema.xml schema.xml.rang-long vi schema.xml <? ...

  4. 使用Urllib下载图片

    urllib下载图片 urllib3下载图片 Urllib下载图片 from urllib import request import re import os # 妹子图首页 下载首页的几张 url ...

  5. [排序][链表]Leetcode147 对链表进行插入排序

    思路: 插入算法的思想很简单,此题比较为链表数据类型,方便的是不用一个一个的向后移动元素,但是找到应该插入的位置相对麻烦,因为链表只有next指针,无法快速定位要插入的位置.在链表前面插入一个空指针, ...

  6. JAVA字符串截取与求模

    public class splitdemo { /** * @param args */ public static void main(String[] args) { // TODO Auto- ...

  7. 计算机体系结构:量化研究方法(中文第五版)_扫描版_23.5M.pdf

  8. 利用数据库视图实现WEB查询敏感信息接口动态脱敏

    前言: 利用数据库视图,实现web接口查询敏感信息时动态脱敏. 具体目标:某接口为用户信息查询接口,返回敏感用户信息(id,姓名.手机号[敏感].身份证号[敏感]),如果web用户为管理员角色,则查询 ...

  9. ES6-Symbol.iterator 迭代器

    一个数据结构只要部署了Symbol.iterator属性就能使用 for...of遍历 与 ...运算符 操作 Object身上没有Symbol.iterator,当直接使用时会报错 let obj ...

  10. Java实现输出“杨辉三角”

    import java.util.Scanner; public class SumTrangles { public static void func(int n) { if (n < 0) ...