Понимание списка и «не поддерживается между экземплярами list и float» - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь использовать метод понимания списка, чтобы найти в моем списке элементы, размер которых превышает одну из моих переменных.

Однако я получаю это сообщение об ошибке:

TypeError: '>' not supported between instances of 'list' and 'float'

Iне знаю, как обойти это.Какие-нибудь советы?Вот моя программа:

def read_points():
    global alfa
    alfa = []
    alfa.append([])
    alfa.append([])
    a = 0
    b = 0
    a = float(a)
    b = float(b)
    print("Input the points, one per line as x,y.\nStop by entering an empty line.")
    while a == 0:
        start = input()
        if start == '':
            a = a + 1
            if b == 0:
                print("You did not input any points.")
        else:
            alfa[0].append(int(start.split(",")[0]))
            alfa[1].append(int(start.split(",")[1]))
            b = b + 1
    else:
        print(alfa)

def calculate_midpoint():
    midx = sum(alfa[0]) / len(alfa[0])
    global midy
    midy = sum(alfa[1]) / len(alfa[1])
    print("The midpoint is (",midx,",",midy,").")

def above_point():
    larger = [i for i in alfa if i > midy]   ###   PROBLEM IS HERE :)   ###
    number_above = len(larger)
    print("The number of points above the midpoint is", number_above)

def main():
    read_points()
    calculate_midpoint()
    above_point()

main()

1 Ответ

0 голосов
/ 24 октября 2018

alfa - список списков.

this:

larger = [i for i in alfa if i > midy] 

сравнивает один из внутренних списков списка i с плавающей точкой midy

, которая не поддерживается.Это точное значение вашего сообщения об ошибке “not supported between instances of 'list' and 'float”.

Я бы объединил ваши координаты из двух внутренних списков, содержащих все x и все y, в список точек (x, y) и отфильтровал те, которые лежат выше вашегосреднее значение:

points = [ (x,y) for x,y in zip(*alfa) ]
larger = list(filter( lambda p: p[1] > midy, points)) # get all points that have y  midy

Попробуйте:

larger = [
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...