2013-04-22 58 views
4

我有一个列表['1 2 4 5 0.9', '1 2 4 5 0.6', '1 2 4 5 0.3', '1 2 4 5 0.4']remove元素,如果它有它一定的字符串

我也有另一个列表:[0.9, 0.3, 0.7, 0.8]

我想使用第二个列表和第一列表元素包括最新第二列表,则该元素被删除,因此第一个列表结束,如:

[1 2 4 5 0.6', '1 2 4 5 0.4'] 

回答

8

你的意思是这样的:

>>> lst = ['1 2 4 5 0.9','1 2 4 5 0.6','1 2 4 5 0.3','1 2 4 5 0.4'] 
>>> s = set([0.9,0.3,0.7,0.8]) 
>>> [x for x in lst if float(x.split()[-1]) not in s] 
['1 2 4 5 0.6', '1 2 4 5 0.4'] 
+2

我觉得'x.rsplit('',1)'更好,因为它可以比'x.split()[ - 1]'做更少的分割。 – 2013-04-22 19:05:34

+1

@segfolt - 如果字符串以空格结尾,则表示“失败”。也许'x.rsplit(None,1)'好一点。 – mgilson 2013-04-22 19:46:54

0

这是一个更通用的方法来做到这一点。我意识到这可能不是实现这一目标的最佳方法,但这是我头顶的问题。

>>> listOne = ['1 2 4 5 0.9', '1 2 4 5 0.6', '1 2 4 5 0.3', '1 2 4 5 0.4'] 
>>> listTwo = [0.9, 0.3, 0.7, 0.8] 
>>> finalList = [] 
>>> for element in listOne: 
     flagBit = 0 
     for number in element.split(): 
      if float(number) in listTwo: 
       flagBit = 1 
       break 
     if flagBit == 0: 
      finalList.append(element) 
相关问题