我怎么写列表理解?

时间:2012-06-09 02:04:54

标签: python

我想编写一个列表解析,它将每隔一个元素从数组中打印一个元素。 我该怎么做?

array = [1,2,3,4,5,6,7,8,9]
output: 2
3
4
5
6
7
8
9

3 个答案:

答案 0 :(得分:3)

array = [1,2,3,4,5,6,7,8,9]

newarray = [array[i] for i in range(0, len(array), 2)]

print(newarray)

结果为[1, 3, 5, 7, 9]

答案 1 :(得分:1)

“数组中的元素每个其他元素”...意味着打印出所有其他元素?

如果你真的想使用列表理解,这里有两个,一个用于收集偶数索引条目其他奇怪的在各自的列表中然后打印出来进行。

evens = [elem for i, elem in enumerate(array) if not (i % 2)]
odds  = [elem for i, elem in enumerate(array) if i % 2]

print evens # entries at even index value
[1, 3, 5, 7, 9]

print odds  # entries at odd index values
[2, 4, 6, 8]

答案 2 :(得分:1)

关于代码的最终用途是什么有点不清楚,因此实现它的最佳方法是什么。但是,如果您想要从列表中选择每个第二个元素,则可以使用切片表示法:

>>> array = [1,2,3,4,5,6,7,8,9]
>>> odd = array[::2]
>>> odd
[1, 3, 5, 7, 9]
>>> even = array[1::2]
>>> even
[2, 4, 6, 8]

这可以推广到通过改变步骤参数来选择每个 nth 元素,例如,选择每个第三个元素:

>>> third = array[::3]
>>> third
[1, 4, 7]