2012-01-27 74 views
1

我需要從列表中的字符串或小於28的列表中刪除所有值。任何幫助?使用條件從Python列表中刪除項目

a[1:3] 

a = [[u'ufs_munic', u'ext_paises', u'5', u'6', u'7', u'8', u'5551', u'5552', u'5553', u'5554', u'5555', u'5556', u'5557'], [u'ufs_munic', u'ext_paises', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'5301', u'5302', u'289', u'5303', u'5304', u'5305', u'290', u'5306', u'5307', u'5308', u'5309', u'291', u'5310', u'5311', u'5312', u'5313', u'5314', u'5315', u'5316', u'5317', u'292', u'5318', u'5319', u'5320']] 

我需要得到的結果一樣:

[[u'5551', u'5552', u'5553', u'5554', u'5555', u'5556', u'5557'], [u'5301', u'5302', u'289', u'5303', u'5304', u'5305', u'290', u'5306', u'5307', u'5308', u'5309', u'291', u'5310', u'5311', u'5312', u'5313', u'5314', u'5315', u'5316', u'5317', u'292', u'5318', u'5319', u'5320']] 

回答

4

使用filter

def passed(item): 
    try: 
     return int(item) > 28 
    except ValueError: 
     return False 
result = [filter(passed, item) for item in a] 
+0

太棒了!代碼工作得很好! – user1172558 2012-01-27 06:28:24

0

過濾器主題的變化。這不會工作,如果你的電話號碼是如此之大,它轉換爲少於28的東西溢出:)

map(lambda lst : filter(lambda v : v.isdigit() and float(v) > 28, lst),a)