使用条件从Python中的列表中删除项目

时间:2012-01-27 05:44:15

标签: python list

我需要从列表中的一组列表中删除所有值,这些列表是字符串或低于28.任何帮助?

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']]

2 个答案:

答案 0 :(得分:4)

使用filter

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

答案 1 :(得分:0)

过滤器主题的变化。如果您的数字太大而无法转换为低于28的数字,那么这将无效。)

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