美文网首页
python解压赋值

python解压赋值

作者: 写给明天的自己 | 来源:发表于2021-10-17 21:14 被阅读0次

    情绪的尽头,不是脏话,不是发泄,而是沉默。

    上一篇:python获取相对路径、绝对路径的file使用

    可迭代序列或者可迭代对象解压后赋值给多个变量

    前提条件:变量的数量必须和序列元素的数量一样多。

    变量个数多于序列元素个数报错:ValueError: not enough values to unpack(expected 6, got 5)
    变量个数少于元素个数报错:ValueError: too many values to unpack(expected 4)

    示例如下:

    Tuple(元组)
    num_tuple = (1, 2, 3, 4, 5)
    a, b, c, d, e  = num_tuple
    print(a, b, c, d, e)
    
    List(列表)
    num_list = [1, 2, (3, 4), 5]
    a, b, c, d = num_ list
    print(a, b, c, d)
    
    String(字符串)
    name_str = 'chb'
    a, b, c = name_str
    print(b)
    
    如果你的只想使用其中几个元素,可以使用其他(未使用过的)变量名去占位,示例如下:
    num_tuple = (1, 2, 3, 4, 5)
    a, _, c, _, e = num_tuple
    print(a, c, e)
    

    有些时候你在解压序列的时候并不知道这个序列有多少个元素,因此你也不知道需要多要个变量来占位,此时就需要
    使用python的星号表达式,示例如下:

    例如现在有一个比赛需要计算去掉最高分和最低分后的平均分,先排序,再使用星号表达式。

    score_list = [85, 86, 78, 99, 74, 78]
    score_list = sorted(score_list, reverse=True)
    s_max, *s_mid, s_min = score_list
    print(sum(s_mid)/len(s_mid))
    

    注意以上解压的s_mid永远都是列表类型。

    嵌套序列中使用占位变量

    v_list = ['name', 'age', 10, ['play', 'ball', 'lol']]
    name, *_, [*_, hobby] = v_list
    print(name, hobby)
    

    如果感觉本文对您有帮助可以点个赞哦

    本文为学习笔记,转载请标明出处

    本文仅供交流学习,请勿用于非法途径

    仅是个人意见,如有想法,欢迎留言

    相关文章

      网友评论

          本文标题:python解压赋值

          本文链接:https://www.haomeiwen.com/subject/yjnwoltx.html