Python "Every Other Element"成语

标签 python idioms

我觉得我花了很多时间用 Python 编写代码,但没有足够的时间创建 Pythonic 代码。最近我遇到了一个有趣的小问题,我认为它可能有一个简单、惯用的解决方案。套用原文,我需要收集列表中的每个连续对。例如,给定列表 [1,2,3,4,5,6],我想计算 [(1,2),(3,4),(5, 6)].

当时我想出了一个看起来像翻译 Java 的快速解决方案。重新审视这个问题,我能做的最好的就是

l = [1,2,3,4,5,6]
[(l[2*x],l[2*x+1]) for x in range(len(l)/2)]

在长度不均匀的情况下,它具有将最后一个数字扔掉的副作用。

我是否缺少更惯用的方法,或者这是我能得到的最好的方法?

最佳答案

这样会更整洁一点:

>>> data = [1,2,3,4,5,6]
>>> zip(data[0::2], data[1::2])
[(1, 2), (3, 4), (5, 6)]

(但如果您不熟悉范围的“跨步”功能,它的可读性可能会降低)。

与您的代码一样,它会丢弃您拥有奇数个值的最后一个值。

关于Python "Every Other Element"成语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631189/

相关文章:

c++ - 为什么 `T* operator->()`写了一次就重复申请了?

python - REST API 项目的文档

python - Keras 已安装但未导入 (rpi)

ruby 典型的eql?和 == 实现

c++ - 具有多态模板参数的多态模板类

python - 如何将关键字放入我的代码中?

c++ - 让细节命名空间代码看不见 - 优雅

HTTParty 的 Python 等价物

Python,变量存储在内存中

python - xgboost 预测对概率的贡献