根据条件从列表中提取值

时间:2013-08-25 05:30:27

标签: python-2.7

我正在尝试根据条件从列表中获取样本。它应该很容易,但我无法按照以下方式执行:

a = [2,4,5,9,1,6,4]
b = 6
c = [x for x in a if a < b]

我基本上需要一个新列表,其中应包含小于6的值。任何建议?

3 个答案:

答案 0 :(得分:3)

或者,另一种方式:

>>> a = [2,4,5,9,1,6,4]
>>> b = 6
>>> c = filter(lambda x: x < b, a)
>>> c
[2, 4, 5, 1, 4]

你几乎得到了它,因为伊格纳西奥指出:

>>> c = [x for x in a if x < b]
>>> c
[2, 4, 5, 1, 4]

列表理解是编写此循环的更长方法:

>>> c = []
>>> for x in a:
...     if x < b:
...         c.append(x)
...
>>> c
[2, 4, 5, 1, 4]

答案 1 :(得分:1)

你错过了。您需要比较每个元素,而不是序列。

c = [x for x in a if x < b]

答案 2 :(得分:0)

嗯,你的意思是if x < b,对吗? 你也有一个问题,即数组a中的值是字符串而不是整数。 所以: [x for x in a if int(x)<b]