微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 头部和尾部在一条线上

是否有一种 pythonic方法来解压缩第一个元素中的列表和单个命令中的“尾部”?

例如:

>> head,tail = **some_magic applied to** [1,1,2,3,5,8,13,21,34,55]
>> head
1
>>> tail
[1,55]

解决方法

在Python 3.x下,你可以很好地做到这一点:

>>> head,*tail = [1,55]
>>> head
1
>>> tail
[1,55]

3.x中的一个功能是在解包时使用*运算符,表示任何额外的值.它在PEP 3132 – Extended Iterable Unpacking中描述.这也具有处理任何可迭代的优点,而不仅仅是序列.

它也很可读.

如PEP中所述,如果您想在2.x下执行等效操作(无需创建临时列表),则必须执行以下操作:

it = iter(iterable)
head,tail = next(it),list(it)

正如评论中所指出的,这也提供了获取head的认值而不是抛出异常的机会.如果你想要这个行为,next()会带一个带有认值的可选的第二个参数,所以如果没有head元素,next(it,None)会给你None.

当然,如果您正在处理列表,没有3.x语法的最简单方法是:

head,tail = seq[0],seq[1:]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐