我有一个名为 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]。任何帮助都将非常感激。
答案 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)