我有一个很多值的列表,我需要摆脱一些值。
我想从所有不适合的元素中获取。我需要只在范围(x,y)中包含元素。
我试过这个:
K = [v > x and v < y for v in L]
但是我得到了True
和False
值的列表...
我怎样才能做到这一点?
示例:
L = [4, 5, 7]
range = [4, 6]
K = [5]
答案 0 :(得分:5)
您获得布尔值的原因是您返回比较结果而不是值。此外,Python将比较链接起来,因此您不需要使用and
:
K = [v for v in L if x < v < y]
答案 1 :(得分:2)
选项1:
`K = filter(lambda x: x > num1 and x < num2, L)`
选项2:
if
您应该添加CharSequence[] lines =
extras.getCharSequenceArray(Notification.EXTRA_TEXT_LINES);
if(lines != null && lines.length > 0) {
StringBuilder sb = new StringBuilder();
for (CharSequence msg : lines)
if (!TextUtils.isEmpty(msg)) {
sb.append(msg.toString());
sb.append('\n');
}
return sb.toString().trim();
}
CharSequence chars =
extras.getCharSequence(Notification.EXTRA_BIG_TEXT);
if(!TextUtils.isEmpty(chars))
return chars.toString();
,否则您将获得布尔结果...
答案 2 :(得分:1)
表达式a > b
是一个布尔表达式,可以是True
或False
,而且,你正在使用两个布尔表达式的logical AND
,这就是为什么您会看到True
和False
的列表。如果想要获取给定范围内的值,请执行以下操作:
K = [i for i in L if (i > range[0] and i < range[1])]