带过滤函数的Python列表(excelway)

2024-10-04 03:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python列表:

listx = [["a", 127, "Blue", 0],
         ["b", 127, "Red", 1],
         ["b", 127, "Green", 0],
         ["b", 99, "Green", 1],
         ["c", 99, "Yellow", 0]]

这是一个更好地了解情况的表视图:

This is table view

我想做一些过滤功能。例如,我想得到一个索引为0=“b”且索引1=127的列表。因此,结果必须是:

^{pr2}$

listxnew的表视图可以更好地了解情况:

enter image description here

Python我怎么能用这个简单的代码做到这一点?谢谢。在


Tags: 代码功能视图列表情况greenbluered
3条回答
listx = [["a", 127, "Blue", 0],
         ["b", 127, "Red", 1],
         ["b", 127, "Green", 0],
         ["b", 99, "Green", 1],
         ["c", 99, "Yellow", 0]]

listnew = filter(lambda x: x[0]=='b' and x[1]==127,listx)

print listnew

尝试使用Filter

这里有一个易于扩展的简单解决方案:

def filterls(ls, opts):
    """
    ls - list
    opts - dict - {id: match_info}
    """
    results = []
    for l in ls:
        for (i, t) in opts.items():
            if l[i] != t:
                break
        else:
            results.append(l)
    return results

例如:

^{pr2}$

您可以使用列表理解来执行此操作,如下所示:

listxnew = [i for i in listx if i[0:2]==['b', 127]]

>>> print listxnew
[['b', 127, 'Red', 1]
 ['b', 127, 'Green', 0]]

相关问题 更多 >