过滤python中的列表列表

时间:2013-01-31 07:48:22

标签: python

我有一个像这样的列表列表

testList=[[1,'test',3],[4,'test',6],[1,6,7]]

我的要求是创建另一个列表列表,如下所示

rstList=[[1,'test',3],[1,6,7]]

也就是说,具有元素'test'的列表需要将仅>附加到rstList。

5 个答案:

答案 0 :(得分:3)

flag = True
for item in testList:
    if ('test' in item and flag) or ('test' not in item):
        flag = False
        rtList.append(item)

答案 1 :(得分:-1)

testList=[[1,'test',3],[4,'test',6],[1,6,7]]
rstList = []
for item in testList:
    matched = False
    for result_item in rstList:
        if item[1] == result_item[1]:
            matched = True
    if not matched:
        rstList.append(item)

答案 2 :(得分:-1)

我希望以下代码适合您

def genNewList(v):
    test = False
    ret = []
    for el in v:
        if ('test' in el):
            if(test == False):
                ret.append(el)
                test = True
        else:
            ret.append(el)
    return ret

testList=[[1,'test',3],[4,'test',6],[1,6,7]]

print 'Original list', testList
print 'New list', genNewList(testList)

Here你可以运行脚本,和/或分叉并使用它。

答案 3 :(得分:-1)

假设您只想将第一个子列表保留为'test'元素,这里有一种方法:

def func(x):
    global foundTest
    if 'test' not in x: return True
    elif not foundTest: foundTest = True; return True
    return False

foundTest = False
rstList = filter(func, testList)

答案 4 :(得分:-3)

filter(lambda x: x if 'test' in x else None, testList)