星形解压序列类型(或iterable可迭代对象类型)总结
Posted jeffrey-yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了星形解压序列类型(或iterable可迭代对象类型)总结相关的知识,希望对你有一定的参考价值。
一般应用
对于常见的集合类型,如tuple,list,string,files或任何可迭代对象(iterable,iterator,generator等),通常会碰到需要提取集合类型中的一系列元素或单个元素(item)的需求。Python提供了解压集合类型的操作。
通常,在函数中定义返回值时,我们通常可以这么写:return x, y
,这种写法其是返回了一个tuple。
那么,比如我们有一个list,data = [‘ACME‘, 50, 91.1, (2012, 12, 21)]
。我们可以按照list中各个子item的含义一起解压成各个单独的变量便于其后的操作。
name, shares, price, date = data
。
注意: 解压集合类型时,赋值表达式左边的变量个数必须与集合类型中元素的个数一致。
丢弃特定迭代对象中的元素
有时候并不是所有的元素都会在接下来的操作中用到,Python提供了特殊的语法来丢弃特定元素:
data = [‘ACME‘, 50, 91.1, (2012, 12, 21)] _, shares, price, _ = data
星形解压任意长度可迭代对象
需求:若可迭代对象元素太多,按照一般的写法,需要写数量众多的元素变量。Python提供了一种星形表达式的语法。如下:
record = (‘Dave‘, ‘dave@example.com‘, ‘773-555-1212‘, ‘847-555-1212‘) name, email, *phone_numbers = user_record
星形表达式可以解压任意数量的元素,作为一个单独的list保存。值得注意的是,无论有多少电话号码被解包(包括没有电话号码),phone_numbers变量将始终是一个列表。 因此,任何使用phone_numbers的代码都不必考虑它可能不是列表或执行任何类型的附加类型检查的可能性。
以上是关于星形解压序列类型(或iterable可迭代对象类型)总结的主要内容,如果未能解决你的问题,请参考以下文章