2012-01-27 54 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)