Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2013 14:38:32

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

GGnoob
Допустим, я с начала записываю все столбцы в списки. Нахожу в первом списке максимальные значения и, если их несколько, перехожу ко второму списку и так далее до последнего столбца.

Есть другие ? норм способ, я так и сделал



Офлайн

#2 Окт. 5, 2013 17:01:27

GGnoob
Зарегистрирован: 2013-10-01
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

Budulianin
Ну эт я в общий алгоритм описал. А вот есть такая загвоздка в нем: после того, как я нахожу максимальные элементы в первом столбце-списке, как найти наксимальные елементы во втором столбце, но уже только среди тех элементов, которые находятся на одной строке с элементами из 1го столбца и то же самое для 3го столбца, т.е. мне надо как-то номер строки постоянно “держать в уме”. В общем думаю понятно объяснил

Отредактировано GGnoob (Окт. 5, 2013 17:01:59)

Офлайн

#3 Окт. 5, 2013 18:40:24

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

GGnoob

Собрал все строки из файла, выбрал из них те(либо новый список создал, либо номер запомнил), в которых максимальный элемент в 1 столбце, тоже самое для получившегося списка(или того же, если номера запоминал), только для следующего столбца и т.д.

Можешь использовать функцию max задав принцип выбора, через key.

искать строку с максимальным значением во втором столбце:
lst = [(1,2), (10,-1)]
max(lst, key=lambda x: x[1])
>>>(1, 2)



Отредактировано Budulianin (Окт. 5, 2013 18:47:54)

Офлайн

#4 Окт. 6, 2013 07:07:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

GGnoob
Есть еще один вопрос немного по другой теме: в файле имеется еще один столбец с % комиссий. Мне нужно найти такую строку в файле, у которой будет наивысшее значение в столбце “цена”, но если наивысших значений несколько, то нужно найти еще наивысшую комиссию (т.е. искомой будет строка в файле и с наивысшей ценой, и с наивысшей комиссией, если наивысших цен несколько). Как подобное можно реализовать?

GGnoob
А вот есть такая загвоздка в нем: после того, как я нахожу максимальные элементы в первом столбце-списке, как найти наксимальные елементы во втором столбце, но уже только среди тех элементов, которые находятся на одной строке с элементами из 1го столбца и то же самое для 3го столбца, т.е. мне надо как-то номер строки постоянно “держать в уме”.

это всё можно сделать за один проход
нужно подготовить двумерный массив, в котором строка - (цена, комиссия)
(сортировка - это не один проход)


Budulianin
line.append(count.next())# в Python 3.x count.__next__()
используй next(count), методы типа __name__() для того и названы так, чтобы их не вызывали вручную

Budulianin
Можешь использовать функцию max задав принцип выбора, через key.
можно попробовать за один проход

>>> (4, 3) < (5, 2)
True
>>> (5, 3) < (5, 2)
False
>>> (5, 3) < (5, 4)
True
>>>

в принципе, key даже не нужен
>>> 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 (Окт. 6, 2013 07:29:52)

Офлайн

#5 Окт. 6, 2013 13:38:50

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

py.user.next
Budulianin
line.append(count.next())# в Python 3.x count.__next__()
используй next(count), методы типа __name__() для того и названы так, чтобы их не вызывали вручную

Коммент читай, в 3.x у Count() нету метода next, только __next__, поэтому решил его написать

Но иногда можно :)

Budulianin
в принципе, key даже не нужен
Да, убрал условие, так же норм отрабатывает, спасибо





Отредактировано Budulianin (Окт. 6, 2013 14:44:24)

Офлайн

#6 Окт. 6, 2013 21:31:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

Budulianin
Коммент читай, в 3.x у Count() нету метода next, только __next__, поэтому решил его написать
и для .next() и для __next__() тем более вызывай глобальную функцию next()
раньше её не было, вызывали .next(), потом добавили (где-то pep есть)

add
нашёл pep



Отредактировано py.user.next (Окт. 6, 2013 22:30:21)

Офлайн

#7 Окт. 6, 2013 21:53:50

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

py.user.next
вызывай глобальную функцию next()
Да, там built-in function next, не знал, не пользуюсь 3.x
Спасибо



Офлайн

#8 Окт. 6, 2013 22:31:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

Budulianin
Да, там built-in function next, не знал, не пользуюсь 3.x
в python 2.6 тоже есть



Офлайн

#9 Окт. 6, 2013 22:52:50

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

py.user.next
в python 2.6 тоже есть

Да, точно :) а я методом пользовался, не знал



Офлайн

#10 Окт. 8, 2013 10:44:05

GGnoob
Зарегистрирован: 2013-10-01
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 Удаление лишнего символа у каждого элемента списка

Спасибо py.user.next и Budulianin за полезные советы!

Отредактировано GGnoob (Окт. 8, 2013 10:44:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version