zoukankan      html  css  js  c++  java
  • Python 解压序列、可迭代对象并赋值给多个变量

    Python数据结构和类型

    1.1 解压序列赋值给多个变量

    现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量?

    解决思路:先通过简单的解压赋值给多个变量,前提是变量的数量和序列元素的数量是一致的

    下面是简单的代码

    p = (1,2,3)
    x,y,y = p
    >>>x ---1
    >>>y---2
    >>>z---3
    
    **代码实现1**
    data = [ 'ABC',20,30.11,(16,28,99) ]   # data中的元素有4个
    name,share,price,hello = data     # 赋值
    
    >>>name
    'ABC'
    
    >>>share
    20
    
    >>>price
    30.11
    
    >>>date
    (16,28,39)
    
    **代码实现2**
    
    data = [ 'ABC',20,30.11,(16,28,99) ]   
    
    name,share,price,(one,two,three)= data 
    
    >>>name 
    'ABC'
    
    >>>one
    
    16
    
    >>>two
    28
    
    >>>three
    99
    
    
    

    如果变量个数和元素的个数不匹配,就会出现错误

    
    >>>p = ( 4,5)
    x,y,z = p    #变量的个数超过元素的个数
    
    ValueError: not enough values to unpack (expected 3, got 2)	
    

    这种解压赋值适合任何迭代对象,字符串,。。。。

    >>> a,b,c,d,e = p
    >>> a
    'h'
    >>> b
    'e'
    >>> c
    'l'
    >>> d
    'l'
    >>> e
    'o'
    >>>
    

    如果想要解压一部分,丢弃其他值,只需要通过任意变量进行占位,最后将这些变量丢弃即可

    data = [ 'ABC',20,30.11,(16,28,99) ] 
    _,share,price,_ = date
    >>>share
    20
    >>>price
    30.11
    
    

    在测试中发现,输入丢弃变量的_的时候,显示的值是(16,28,99)

    1.2 解压可迭代对象赋值给多个变量

    ** 问题**

    如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError 。 那么怎样才能从这个可迭代对象中解压出N个元素出来?

    解决方案

    Python的星号表达式可以用来解决这个问题

    http://blog.csdn.net/liuxingen/article/details/50113923

    函数参数前面的星号(*)

  • 相关阅读:
    EF深入系列--细节
    EF深入系列--Code First
    WebApi深入学习--特性路由
    转:asp.net TreeView CheckChanged 事件浅谈
    Entity Framework 中的in操作实例
    解决IE8 内置JSON.stringify,中文变unicode的问题
    解决SQL Server的cannot resolve the collation conflict问题
    sqlserver 解析Json字符串
    EF性能调优
    IIS 发布mvc 403.14
  • 原文地址:https://www.cnblogs.com/Python666/p/6640288.html
Copyright © 2011-2022 走看看