概念

  python的解包可以这样来理解:把元素给拆分并把其赋值给自己所需要的变量,因此元素应该是一个可迭代对象。

形式

  简单版本

  下面展示的是解包的基本形式,根据长度赋值给对应多的变量。

name_list = ["Jone", "Jack", "Alex", "Tony"]
n1, n2, n3, n4 = name_list
print(n1)
print(n2)
print(n3)
print(n4) """
Jone
Jack
Alex
Tony
"""

  注:这种形式一定是一样多个变量否者会报错 -> ValueError: too many values to unpack

  升级版本

  有时候我们就需要其中的一部分,那怎么办呢?其实也很简单:与 * 一起使用。

  假如只要开头和结尾:

  

name_list = ["Jone", "Jack", "Alex", "Tony"]
n1, *_, n4 = name_list
print(n1)
print(n4) """
Jone
Tony
"""

  假如只要开头或结尾

name_list = ["Jone", "Jack", "Alex", "Tony"]
n1, *_ = name_list
*_, n4 = name_list
print(n1)
# Jone print(n4)
# Tony

  

 注: 此处的*表示自动连续取值,只要是没有明确说给哪个变量的它都要(可能表述的不够准确),_ 表示"不要的",其实它也是一个变量,但在python中是一个约定,正如类的_开头一样,不作任何强制性的约束。这与GO有很大的不同。

  其他情景

  

msg = "This article is about the chemical compound"
msg_list = msg.split() # ['This', 'article', 'is', 'about', 'the', 'chemical', 'compound'] # 取前面几个
m1, m2, m3, *_ = msg_list # 取后面几个
*_, m4, m5, m6 = msg_list # 取两边的 a1, a2, *_, a3, a4 = msg_list

python解包的更多相关文章

  1. 关于Python 解包,你需要知道的一切

    解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来(防杠精:此处描述并不严谨,因为容器中的元素并没有发生改变)放在其它地方,好比你老婆去菜市场买了一袋苹果回来分别发给家里的每个成员, ...

  2. Python解包参数列表及 Lambda 表达式

    解包参数列表 当参数已经在python列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况.例如,内置的 range() 函数需要单独的 start 和 stop 参数.如果它们不能 ...

  3. Python - 解包的各种骚操作

    为什么要讲解包 因为我觉得解包是 Python 的一大特性,大大提升了编程的效率,而且适用性很广 啥是解包 个人通俗理解:解开包袱,拿出东西 正确理解:将元素从可迭代对象中一个个取出来 python ...

  4. python高级特性之封包与解包

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:kwsy PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  5. python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数

    用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1 ...

  6. Python中的可变、不可变对象和赋值技巧序列解包

    可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immuta ...

  7. Python 序列与映射的解包操作

    解包就是把序列或映射中每个元素单独提取出来,序列解包的一种简单用法就是把首个或前几个元素与后面几个元素分别提取出来,例如: first, seconde, *rest = sequence 如果seq ...

  8. Python 序列与映射的解包操作-乾颐堂

    解包就是把序列或映射中每个元素单独提取出来,序列解包的一种简单用法就是把首个或前几个元素与后面几个元素分别提取出来,例如: first, seconde, *rest = sequence 如果seq ...

  9. Python小技巧:使用*解包和itertools.product()求笛卡尔积

    [问题] 目前有一字符串s = "['a', 'b'],['c', 'd']",想把它分开成为两个列表: list1 = ['a', 'b'] list2 = ['c', 'd'] ...

随机推荐

  1. Intel 80386 CPU

    一.80386 概述 80386处理器被广泛应用在1980年代中期到1990年代中期的IBM PC相容机中.这些PC机称为「80386电脑」或「386电脑」,有时也简称「80386」或「386」.80 ...

  2. uic

    uic user interface complieruic mainwindow.ui >> ui_mainwidow.h

  3. Linux学习建议[转]

    端正学习态度学linux不会为了当黑客或者骇客,如果你为了当黑客或骇客而学习Linux,那么你离进监狱不远了,只是时间早晚而已.很多小白都知道“黑客攻击工具”很多来源与Linux平台上的,我也曾指导过 ...

  4. lixuxmint系统定制与配置(5)-效率配置

    小书匠Linux 目录: 1.zsh安装与配置 1.1 安装 1.1.1 检查当前的终端类型 1.1.2 安装zsh 1.2 美化zsh 1.3 配置zsh 1.3.1 别名设置 2.自动登录服务器 ...

  5. Chrome教程(二)使用ChromeDevTools命令菜单运行命令

    1.模拟移动设备 点击 Toggle Device Toolbar可以打开用于模拟移动设备视口的界面. 2.限制网络流量和 CPU 占用率 要限制网络流量和 CPU 占用率,请从 Throttle 列 ...

  6. P1378 油滴扩展——搜索小记

    P1378 油滴扩展 记得这道题好久以前(好像是上个学期?) 就想做了,但是看着里面的半径边界好像很难处理就没做(主要是当时刚学OI(菜还给自己找借口)): 今天上午一直研究SG函数,做的都自闭了,晚 ...

  7. SpringMVC+Spring+Mybatis简单总结

    SpringMVC+Spring+Mybatis总结 第一部分:分析 web.xml中的配置 SSM框架的整合其实是Spring和SpringMVC的整合以及Spring和Mybatis进行整合. 当 ...

  8. Chrome 浏览器中查看 webSocket 连接信息

      1.以下代码实现一个webSocket连接,在文本输入框中输入内容,点击发送,通过服务器,返回相同的内容显示在下方. 1 <!DOCTYPE html> 2 <html lang ...

  9. bootstrap select 多选的用法,取值和赋值(取消默认选择第一个的对勾)

    h5自带的select标签可以实现按住ctrl键多选的功能,但是样式及其难看. bootstrap select是很好用的前端插件 ​ 首先引入bootstrap和bootstrap-select的c ...

  10. Bootstrap select 多选并获取选中的值

    代码: <!DOCTYPE html><html> <head>    <meta charset="UTF-8">    < ...