python - 头尾在一条线上

标签 python list tail head

有没有一种 Python 的方式来解压缩第一个元素中的列表和单个命令中的“尾部”?

例如:

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

最佳答案

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

>>> head, *tail = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
>>> head
1
>>> tail
[1, 2, 3, 5, 8, 13, 21, 34, 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:]

关于python - 头尾在一条线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532473/

相关文章:

python - 删除两个列表中的公共(public)元素

Linux 下的 Java RandomAccessFile.java 无法正常工作

linux - bash tail 文件夹中的最新文件没有变量

python - 如果我有交易成本,我如何找到股票的最佳买卖点?

python - 如何在pyqt中将数据从对话框窗口检索到主窗口?

python - 使用发布者和订阅者编写 ros 节点?

python - 在列表中查找属性等于某个值的对象(满足任何条件)

python - 查找列表中偶数的索引

node.js - 在nodejs中高效地尾部文件

python - MultiIndex DataFrame 中的 Series.fillna() 未填充;这是一个错误吗?