This question already has answers here:
Iterating over every two elements in a list
(22个答案)
2年前关闭。
我觉得我花了很多时间用Python编写代码,但没有足够的时间来创建Pythonic代码。最近,我遇到了一个有趣的小问题,我认为这可能是一个简单而惯用的解决方案。简而言之,我需要收集列表中的每个顺序对。例如,给定列表
当时我想出了一个快速的解决方案,看起来像翻译过的Java。再问这个问题,我能做的最好的就是
在长度不均的情况下,这会产生丢掉最后一个数字的副作用。
我是否缺少一种惯用的方法,或者这是我所能得到的最好的方法?
(但是,如果您不熟悉范围的“跨度”功能,那么它的可读性可能会降低)。
就像您的代码一样,它会丢弃您拥有奇数个值的最后一个值。
(22个答案)
2年前关闭。
我觉得我花了很多时间用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 - Python “Every Other Element”成语,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2631189/
10-12 22:06