GGnoob
Допустим, я с начала записываю все столбцы в списки. Нахожу в первом списке максимальные значения и, если их несколько, перехожу ко второму списку и так далее до последнего столбца.
Есть другие ? норм способ, я так и сделал
GGnoob
Допустим, я с начала записываю все столбцы в списки. Нахожу в первом списке максимальные значения и, если их несколько, перехожу ко второму списку и так далее до последнего столбца.
BudulianinНу эт я в общий алгоритм описал. А вот есть такая загвоздка в нем: после того, как я нахожу максимальные элементы в первом столбце-списке, как найти наксимальные елементы во втором столбце, но уже только среди тех элементов, которые находятся на одной строке с элементами из 1го столбца и то же самое для 3го столбца, т.е. мне надо как-то номер строки постоянно “держать в уме”. В общем думаю понятно объяснил
GGnoob
lst = [(1,2), (10,-1)] max(lst, key=lambda x: x[1]) >>>(1, 2)
GGnoob
Есть еще один вопрос немного по другой теме: в файле имеется еще один столбец с % комиссий. Мне нужно найти такую строку в файле, у которой будет наивысшее значение в столбце “цена”, но если наивысших значений несколько, то нужно найти еще наивысшую комиссию (т.е. искомой будет строка в файле и с наивысшей ценой, и с наивысшей комиссией, если наивысших цен несколько). Как подобное можно реализовать?
GGnoob
А вот есть такая загвоздка в нем: после того, как я нахожу максимальные элементы в первом столбце-списке, как найти наксимальные елементы во втором столбце, но уже только среди тех элементов, которые находятся на одной строке с элементами из 1го столбца и то же самое для 3го столбца, т.е. мне надо как-то номер строки постоянно “держать в уме”.
Budulianinиспользуй next(count), методы типа __name__() для того и названы так, чтобы их не вызывали вручнуюline.append(count.next())# в Python 3.x count.__next__()
Budulianinможно попробовать за один проход
Можешь использовать функцию max задав принцип выбора, через key.
>>> (4, 3) < (5, 2) True >>> (5, 3) < (5, 2) False >>> (5, 3) < (5, 4) True >>>
>>> p = max([(4, 3), (5, 2), (5, 3), (5, 4), (5, 2), (5, 3)]) >>> print(p) (5, 4) >>>
>>> lst = [(4, 3), ... (5, 2), ... (5, 3), ... (5, 4), ... (5, 2), ... (5, 3)] >>> >>> p = max(enumerate(lst, 1), key=lambda i: i[1]) >>> print(p) (4, (5, 4)) >>>
>>> import operator >>> >>> lst = [(4, 3), ... (5, 2), ... (5, 3), ... (5, 4), ... (5, 2), ... (5, 3)] >>> >>> p = max(enumerate(lst, 1), key=operator.itemgetter(1)) >>> print(p) (4, (5, 4)) >>>
py.user.next
Budulianin
line.append(count.next())# в Python 3.x count.__next__()
используй next(count), методы типа __name__() для того и названы так, чтобы их не вызывали вручную
BudulianinДа, убрал условие, так же норм отрабатывает, спасибо
в принципе, key даже не нужен
Budulianinи для .next() и для __next__() тем более вызывай глобальную функцию next()
Коммент читай, в 3.x у Count() нету метода next, только __next__, поэтому решил его написать
py.user.nextДа, там built-in function next, не знал, не пользуюсь 3.x
вызывай глобальную функцию next()
Budulianinв python 2.6 тоже есть
Да, там built-in function next, не знал, не пользуюсь 3.x
py.user.next
в python 2.6 тоже есть
