【问题标题】:filtering a list for one absolute condition为一个绝对条件过滤列表
【发布时间】:2017-04-02 22:32:29
【问题描述】:

我有一个名为x的数组列表

[array([ -1.5768,  10.843 ,   2.5462,  -2.9362,   0.    ]),
 array([-0.38214,  8.3909 ,  2.1624 , -3.7405 ,  0.     ]),
 array([-0.24811, -0.17797,  4.9068 ,  0.15429,  0.     ]),
 array([-0.96511,  9.4111 ,  1.7305 , -4.8629 ,  0.     ]),
 array([-1.6162 ,  0.80908,  8.1628 ,  0.60817,  0.     ])]

我想检查每一行的第一列是否大于>0。 ([ -1.5768, -0.38214,.....)]

如果所有行都符合此条件,我想返回“是” 否则我想返回“否”。

我可以为每一行返回一个“是”或“否”(所以输出会有很多是或否,但我只想输出一个是或否。

for row in x:
    if row[0] > 0:
        print ('yes')
    else: print('no')

【问题讨论】:

    标签: python list python-3.x filtering


    【解决方案1】:

    在 python 中,您可以在all() 函数中使用生成器表达式:

    In [7]: arr = [[ -1.5768,  10.843 ,   2.5462,  -2.9362,   0.    ],
       ...:  [-0.38214,  8.3909 ,  2.1624 , -3.7405 ,  0.     ],
       ...:  [-0.24811, -0.17797,  4.9068 ,  0.15429,  0.     ],
       ...:  [-0.96511,  9.4111 ,  1.7305 , -4.8629 ,  0.     ],
       ...:  [-1.6162 ,  0.80908,  8.1628 ,  0.60817,  0.     ]]
    
    In [8]: 
    
    In [8]: all(i[0] > 0 for i in arr)
    Out[8]: False
    
    In [9]: all(i[0] < 0 for i in arr)
    Out[9]: True
    

    在 numpy 中,您可以通过简单的比较和array.all() 属性来做到这一点:

    In [11]: import numpy as np
    
    In [12]: arr = np.array(arr)
    
    In [14]: (arr[:, 0] > 0).all()
    Out[14]: False
    
    In [15]: (arr[:, 0] < 0).all()
    Out[15]: True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      相关资源
      最近更新 更多