列表理解产生错误的值

时间:2017-02-09 18:08:49

标签: python

我有一个很多值的列表,我需要摆脱一些值。 我想从所有不适合的元素中获取。我需要只在范围(x,y)中包含元素。 我试过这个: K = [v > x and v < y for v in L] 但是我得到了TrueFalse值的列表... 我怎样才能做到这一点?

示例:

L = [4, 5, 7]
range = [4, 6]
K = [5]

3 个答案:

答案 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是一个布尔表达式,可以是TrueFalse,而且,你正在使用两个布尔表达式的logical AND,这就是为什么您会看到TrueFalse的列表。如果想要获取给定范围内的值,请执行以下操作:

K = [i for i in L if (i > range[0] and i < range[1])]