无法理解列表的工作原理。包含()方法,
strAttributeList - 所选属性列表 subscriptionAttrList - 所有属性的列表
我想检查 strAttributeList 中的每个选定属性是否应出现在 subscriptionAttrList 中,但我无法检查包含方法的未知行为。
演示列表值 strAttributeList = {“ALL”} subscriptionAttrList = {“ALL”,“NONE”,“PO”}
for(String strAttrValue : strAttributeList){
if(!subscriptionAttrList.contains(strAttrValue))
return false;
};
O / P:
subscriptionAttrList.contains(strAttrValue); //false
subscriptionAttrList.contains(strAttrValue.toString); //false
subscriptionAttrList.contains(""+strAttrValue+""); //false
subscriptionAttrList.contains(""+strAttrValue.toString+""); //false
subscriptionAttrList.contains("ALL"); //true
所有输出都是假的,第五个是真的吗?
请提供正确的方法来比较2个列表的值,因为这花费了我很多时间。谢谢你提前。
答案 0 :(得分:0)
如果subscriptionAttrList
中未包含List
的任何元素,则返回false
因为两个false
有一个共同的元素,但并非所有元素都必然会返回strAttributeList= {"ALL"}
subscriptionAttrList = {"ALL", "NONE", "PO"}
:
true
如果包含元素并且在循环返回false
之后,您应该返回for(String strAttrValue : strAttributeList){
if(subscriptionAttrList.contains(strAttrValue))
return true;
}
return false;
,因为这意味着没有元素匹配:
import collections
edges = collections.defaultdict(list)
答案 1 :(得分:0)
for(String strAttrValue : strAttributeList){
if(!subscriptionAttrList.contains(strAttrValue))
return false;
};
您的代码找到了一个" ALL"在列表的开头,但仍然迭代到第二个元素只是失败并返回false,因此你总是得到假。它只有当你只有1个元素时才能进一步迭代,你得到一个真实的。