使用filter函数在两个列表中查找相似的值

2024-09-29 07:25:19 发布

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

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

基本高度列表是包含基本高度的元组列表

我使用map函数来计算体积,它创建了一个我设置为“volume”的列表。一旦它确定两个列表中是否都有一个值,它就会被放入“correctLIst”中。然后返回correctList

我的问题:

我想使用filter函数查看volumeList和volume,看看它们是否有相似的值。我知道我可以使用类似“correctList=[c for c in volumeList if c in volume]”的东西,但如果可能的话,我希望使用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)
    for n in volumeList:
        correctList = filter(lambda x: x[n] == volume[n],volumeList)
    return correctList

sqPyramidVolume(baseHeightList,volumeList)

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


Tags: lambda函数inmap列表for参数高度
1条回答
网友
1楼 · 发布于 2024-09-29 07:25:19

我个人会使用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)

相关问题 更多 >