我想进行内联比较,而无需在 Python 中编写“If 语句”。如果该值满足阈值条件,则应保持不变。如果不是,则该值应设置为 0。
在 Python 中,我似乎不允许将布尔运算符直接应用于列表。在 Matlab 中,在数组操作中,'True' 给出一个 '1' 和 'False' 给出一个零是很方便的。这是类似 matlab 的,但在 python 中不起作用(也许会与 numpy 一起使用?)。伪代码示例:
a = [1.5, 1.3, -1.4, -1.2]
a_test_positive = a>0 # Gives [1, 1, 0, 0]
positive_a_only = a.*a>0
想要的结果:
positive_a_only>> [1.5, 1.3, 0, 0]
在 python 中执行此操作的最佳方法是什么?
你需要 -
a = [1.5, 1.3, -1.4, -1.2]
positive_a_only = [i if i>0 else 0 for i in a]
print(positive_a_only)
输出
[1.5, 1.3, 0, 0]
这被称为列表理解根据您的输入和预期输出,这是一种“pythonic”方式来做到这一点
列表推导式提供了一种创建列表的简洁方法。常见的应用是创建新列表,其中每个元素都是应用于另一个序列或可迭代的每个成员的某些操作的结果,或者创建满足特定条件的那些元素的子序列。
您的用例是为此而制作的:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句