python中可迭代对象拆包时、怎么赋值给占位符_利用python中的*操作符拆包和赋值可迭代对象...

*运算符:把一个可迭代对象拆开作为函数的参数

拆包:

拆包就相当于把元组中的元素拆分成单个的元素。

>>> t=(20,8) # t是一个元组

>>> divmod(*t) # *t是对元组进行拆包,传参的时候我们希望传两个单元素进去,而不是一个元组

(2, 4)

>>> print(*t) # 拆包之后的输出

20 8

def run(a,*args): # args是一个元组,保存了剩余参数。要写成 a,*args才能形式上对应 1,2,3

print(a)

print(args) # (2,3)

print("对args拆包")

print(*args) # 2 3

print("将未拆包的数据传给run1")

run1(args) #相当于传递了一个元组

print("将拆包后的数据传给run1")

run1(*args) # =run1(2,3)

def run1(*args):

print("输出元组")

print(args)

print("对元组进行拆包")

print(*args)

run(1,2,3) #后面的2和3

---------------------

作者:AlgoLin

来源:CSDN

原文:https://blog.csdn.net/kobebryantlin0/article/details/73864848

版权声明:本文为博主原创文章,转载请附上博文链接!

注意*可以拆包所有可迭代对象(双下iter方法),如字符串等(序列数据)

事实上dict也可以用星号拆包,但只会有键。

平行赋值:是把一个可迭代对象里的元素,一并赋值到对应的变量组成的元组中,比如

>>> one,two="12"

>>> one,two

('1', '2')

前提要求是接受元组的嵌套结构符合表达式本身的嵌套结构([],()代表的嵌套结构是一致的)

_占位符:占据一个位置。

同时*也拓展到占位符:获取不确定数量的参数

有一个在赋值中很容易混淆的例子,一个只有单键值对的函数

>>> a.items()

dict_items([('a', 1)])

可以通过

(b,c), = a.items() 来拆包

(b,c),会被解释器认为是((b,c),),从而和[('a',1)]的嵌套结构一致

这里如果不加逗号会报错。这可能是因为逗号分隔的b,c被认为是第一个层次上的,单个b或者c就能代表[[1,2]]中的[1,2]

不过这样写容易混淆,还是写成for循环的形式好一点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值