1

非家庭作业

我有一个浮动列表x,我想把它变成列表y,一个包含所有第十个元素的列表x

出于我自己的原因,我真的很想用很少的几行来做到这一点。我想出了这样的事情:

i = 0
y = filter(lambda x: (++i)%10; x)

从理论上讲,这应该可以工作,i已经定义好了,并且++i通常会将变量加一i,然后继续表达式。

不幸的是,++在 Python 中不存在。

有什么 Pythonic 方法可以解决这个问题吗?

我的另一个想法是使用地图,并让表达式将元素推送到 list 上y

让我知道我是否可以更清楚。

4

3 回答 3

15

使用扩展切片

>>> x = range(1,101)
>>> y = x[9::10] # 9 -> start from 10th, 10: step
>>> y
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
于 2013-10-08T17:23:56.257 回答
3

怎么样[value for index, value in enumerate(list_of_floats) if index % 10 == 0]

于 2013-10-08T17:23:58.040 回答
0

替代使用itertools.count

>>> x = range(1, 101)
>>> i = itertools.count(1)
>>> y = filter(lambda item: next(i) % 10 == 0, x)
>>> y
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
于 2013-10-08T17:35:51.083 回答