假设您有以下列表:
import numpy as np
mylist=[8.4468975,
8.52036,
9.3605785,
np.ma.core.MaskedConstant(),
np.ma.core.MaskedConstant()]
# [8.4468975, 8.52036, 9.3605785, masked, masked]
并且您希望将0
分配给masked
的所有值,并将1
分配给所有其他值。你怎么能正确地做到这一点?
我试过这个,但结果是一个空列表:
mylist=[1 for i,v in enumerate(mylist) if type(mylist[i]) is float]
结果应为数字(无真/假):
mylist=[1,1,1,0,0]
修改
原始列表中显示的masked
值属于numpy.ma.core.MaskedConstant
类型。
答案 0 :(得分:2)
像这样:
mylist=[8.4468975,
8.52036,
9.3605785,
masked,
masked]
mylist = [0 if type(x) is numpy.ma.core.MaskedConstant else 1 for x in mylist]
另请注意,您的列表理解mylist=[1 for i,v in enumerate(mylist) if type(mylist[i]) is float]
并不完全符合您的描述;至少在一般情况下不是这样。您将1
分配给任何非float
的内容,这与'masked'
的任何内容都不同。
另请注意,在使用[1 for i,v in enumerate(mylist) if type(mylist[i]) is float]
进行循环时(错误地,请参见)不使用v
,因此您可以将其重写为[1 for i,_ in enumerate(mylist) if type(mylist[i]) is float]
。请注意下划线。它用于暗示您将转储 enumerate()
返回的元组的第二项。
最后,我进一步错误地说,因为在你的列表中,mylist[i]
可以用v
代替[1 for v in mylist if type(v) is float]
。如此正确地完成它将被写成:def appointments_for_includes
Hash[appointments: [:customer, templates: :page]]
end
def associations_for_includes
Hash[user: :contact, bundles: appointments_for_includes].merge(appointments_for_includes)
end
。但正如我所说,这与你想要的略有不同。
答案 1 :(得分:2)
您可以使用int()
将布尔值转换为整数:
[int(isinstance(x,float)) for x in mylist]
请注意这是有效的,因为numpy.ma.core.MaskedConstant()
不是float
。
答案 2 :(得分:1)
你可以试试这个:
mylist = [1 if isinstance(v, float) else 0 for i,v in enumerate(mylist)]
或者,您可以这样做:
mylist = [0 if isinstance(v, np.ma.core.MaskedConstant) else 1 for i,v in enumerate(mylist)]
这样您只能将特定的蒙版类型设置为0。
检查变量类型的相关函数是:https://docs.python.org/2/library/functions.html#isinstance
此外,正如您(正确地)使用枚举构造一样,您已经使用变量v循环遍历值,因此无需访问mylist [i]。
答案 3 :(得分:1)
您可以在此处使用 void setProgressBar() {
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
loadingLayout.setVisibility(View.GONE);
hasChilderen = dataSnapshot.hasChildren();
if (!hasChilderen) {
noViewTxtView.setVisibility(View.VISIBLE);
}
query.removeEventListener(this);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
功能:
ex_dict = {"test" : None}
ex_dict.get('test', 0)
答案 4 :(得分:1)
尽管其他答案令人满意,但您没有看到这个答案。定义函数f
def f(x):
if isinstance(x, np.ma.core.MaskedConstant):
return 0
else:
return 1
现在做列表理解
mylist = [f(x) for x in mylist]