摆脱列表中的空元素

Getting rid of empty elements in a list

我正在使用 astropy,我正在打印 Data 并得到以下结果作为我的输出:

[<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=1>
4.678),                                       
(<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=0>], 
(<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=1>
9.876)]

所以现在我想把“BP/RP excess factor”放在一个新列表 x 中,所以我尝试了:

x=[]
for i in data:  
    if bp > 0:
    x.append(bp[-1]) # "[-1]" to get rid of text and just print out the numbers 
#I am expecting [4.678,9.876]

但这给了我一个错误 index -1 is out of bounds for axis 0 with size 0。我知道这个问题存在是因为在我上面的输出中我有 length=0,但我不知道写一个忽略 if "length=0" 的代码并给我一个包含 "length=1" 的元素的数字列表.

我对 astropy 不熟悉,但在我的本地测试中似乎可以根据 data 的长度进行过滤:

from astropy.table import MaskedColumn

In [16]: columns = [
    ...:     MaskedColumn(data=[1]),
    ...:     MaskedColumn(data=[]),
    ...:     MaskedColumn(data=[2,3])
    ...: ]

In [17]: not_empty = [col for col in columns if len(col.data) > 0]

In [18]: not_empty
Out[18]:
[<MaskedColumn dtype='int64' length=1>
 1,
 <MaskedColumn dtype='int64' length=2>
 2
 3]

In [19]: len(not_empty)
Out[19]: 2

编辑:

column.size 也可以,感谢评论中的@python_user:

not_empty = [col for col in columns if col.size > 0]