2013-08-25 53 views
0

我想根據條件從列表中獲取樣本。它應該是很容易做到,但我無法做到這一點如下:根據條件從列表中提取值

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

基本上,我需要它應該包含的值大於6的任何建議少一個新的列表?

回答

1

或者其他方式:

>>> 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] 
+0

這正是我所需要的。 – Ibe

+0

請注意,伊格納西奧的答案也將工作。 (見更新)。 –

1

您錯過了。您需要比較每個元素,而不是序列。

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

OP還將'str'與'int'進行比較。 – falsetru

+0

除了@ Burhan的答案外,它也可以工作。 – Ibe

0

那麼,你的意思是if x < b,對吧? 您還有一個問題,那就是數組a中的值是字符串而不是整數。 這樣: [x for x in a if int(x)<b]

+0

'int(x)'? 'x'將始終是一個整數。 –