Python 如果列表中的某个元素不是奇数,如何不返回任何内容或跳过该元素
我对Python非常陌生,我很难将我的想法转换成语法 这就是我遇到的问题: 给定一个1×n数组a,编写一个函数odd(a)返回一个新数组,该数组包含索引为奇数的元素Python 如果列表中的某个元素不是奇数,如何不返回任何内容或跳过该元素,python,syntax,Python,Syntax,我对Python非常陌生,我很难将我的想法转换成语法 这就是我遇到的问题: 给定一个1×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,
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]
如何跳过该元素?使用
枚举
同时迭代元素及其索引,并使用条件索引%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]
使用切片和步骤(请参见此处的参考:):
将条件移动到列表理解的末尾,在那里它过滤而不是映射:
对于if x%2==0的x。另外x
不是元素的索引,而是元素本身。需要注意的关键是,在列表理解中,“for”之前是“if-else”,而在末尾是纯“if”。只要习惯语法就行了。@jornsharpe说得很好。通过思考如何在数学中为集合编写表达式,可以更容易地阅读和理解理解理解语法。突然,结尾带有if的符号变得直观起来。谢谢!%是什么意思?@MimiChung,它是mod运算符,基本上是查找除法运算的剩余部分。如果一个数除以2时有余数,那么这个数肯定是奇数。起初我想这样做,但我不确定如何写增量!非常感谢。
import numpy as np
odd = lambda a: [a[i] for i in range(len(a)) if i%2]
a = np.array([1, 3, 4, 2, 5, 3, 8, 1])
print(odd(a)) # -> [3, 2, 3, 1]
def odd(a):
return a[1::2]
#=> [3 2 3 1]