0

我有一个这样的列表

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

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

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

也就是说,具有元素“test”的列表只需要附加到 rstList 一次。

4

5 回答 5

3
flag = True
for item in testList:
    if ('test' in item and flag) or ('test' not in item):
        flag = False
        rtList.append(item)
于 2013-01-31T08:01:01.670 回答
-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)

在这里,您可以运行脚本,和/或 fork 并使用它。

于 2013-01-31T08:05:06.583 回答
-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)
于 2013-01-31T08:01:53.527 回答
-1

假设您只想保留第一个带有“测试”元素的子列表,这是一种方法:

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)
于 2013-01-31T08:05:59.843 回答
-3
filter(lambda x: x if 'test' in x else None, testList)
于 2013-01-31T07:55:27.650 回答