使用过滤器函数在两个列表中查找类似值

时间:2015-11-21 16:33:20

标签: python list filter

我有一个名为 sqPyramidVolume 的函数,它接受两个列表参数: baseHeightList volumeList

baseHeightList 是包含基数和高度的元组列表。

我使用map函数来计算创建列表的音量,我将其设置为' volume'。一旦确定两个列表中是否有一个值,就将其置于正确的列表中。然后返回correctList。

我的问题:

我想使用filter函数查看volumeList和volume,看看它们是否有相似的值。我知道我可以使用类似的东西,' correctList = [c for volume in volume in c in volume]'但如果可能的话,我想使用过滤器。

到目前为止,这是我的代码:

baseHeightList = [(1,3),(3,4)]
volumeList = [13,1,12,9,4,2]

def sqPyramidVolume(baseHeightList,volumeList):
    volume = map(lambda x: int((x[0]**2 * x[1])/3),baseHeightList)
    for n in volumeList:
        correctList = filter(lambda x: x[n] == volume[n],volumeList)
    return correctList

sqPyramidVolume(baseHeightList,volumeList)

返回值应为[1,12]。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

就个人而言,我会使用sets检查包含而不是filter内置函数。尽管如此,我在这里已经包含了正确的过滤功能。

baseHeightList = [(1,3),(3,4)]
volumeList = [13,1,12,9,4,2]

def sqPyramidVolume(baseHeightList,volumeList):
    volume = map(lambda x: int((x[0]**2 * x[1])/3),baseHeightList)
    return filter(lambda x: x in volume, volumeList)

sqPyramidVolume(baseHeightList,volumeList)