我对 Python 非常陌生,并且无法将我的想法转换为语法。

这是给我的问题:

给定一个 1 x n 数组 a,编写一个函数odd(a) 以返回一个新数组,该数组包含索引为奇数的元素。

a = np.array([1, 3, 4, 2, 5, 3, 8, 1])

odd(a) = array([3, 2, 3, 1])

这就是我到目前为止所拥有的:
def odd(a):
    return ['' if x%2==0 else x for x in a]

然而,这会返回:
[1, 3, '', '', 5, 3, '', 1]

我如何简单地跳过该元素?

最佳答案

使用 enumerate 同时迭代元素及其索引,并使用 index % 2 条件提取所有奇数位置值:

import numpy as np

def odd(a):
    return [x for i, x in enumerate(a) if i % 2]

a = np.array([1, 3, 4, 2, 5, 3, 8, 1])
print(odd(a))

# [3, 2, 3, 1]

关于python - 如果不是奇数,如何不返回任何内容或跳过列表中的某个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54279153/

10-11 08:34