Можно ли как-то уместить несколько методов списка в одну строку?
У меня есть функция для сортировки списка и удаления первого и последнего индекса:
def listFilter():
intList.sort()
intList.pop()
intList.pop(0)
Могу ли я каким-либо образом сократить тело функции до одной строки и таким образом вообще искоренить функцию из моего кода и оставить просто эту строку?
я только начал учить Python, не обессудьте, пытаюсь сразу делать код как можно компактнее - приучать с детства, скажем так
Ответы (2 шт):
Вы можете использовать для этой цели сторонний пакет fluentpy. _f оборачивает объект в Wrapper который для всех методов, возвращающих None, возвращает сам объект. ._ разворачивает объект обратно.
import fluentpy as _f
def filter_list(a_list: MutableSequence):
return _f(a_list).sort().pop().pop(0)._
Попроще можно так
a = [3, 10, 1, 0, 456, 2]
a = sorted(a)[1:-1] # вот ваше решение
print(a)
# OUT
# [1, 2, 3, 10]
выражение [1:-1] означает, взять срез от второго элемента (поскольку индексация начинается с 0) до последнего, не включая его.