2015-11-21 2 views
0

У меня есть функция под названием sqPyramidVolume, которая принимает два параметра, которые перечислены: baseHeightList и volumeList.Нахождение подобных значений в двух списках, используя функцию фильтра

baseHeightList - это список кортежей, которые содержат основание и высоту.

Я использую функцию карты для вычисления тома, который создает список, который я установил как «том». Как только он определяет, будет ли одно значение в обоих списках, оно помещается в «correctLIst». Затем возвращается правильный список.

Мой вопрос:

Я хочу использовать функцию фильтра, чтобы посмотреть на volumeList и объема, чтобы увидеть, если они имеют одинаковые значения. Я знаю, что могу использовать что-то вроде: «correctList = [c для c в volumeList, если 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

Лично я хотел бы использовать 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) 
Смежные вопросы