Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 3, 2021 10:39:18

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1311
Репутация: +  113  -
Профиль   Отправить e-mail  

Фильтрация таблицы

bat_av
def print_top5_by_column у нас уже есть print

как раз в этой функции print не нужен,а нужно вернуть результат как в функции def filter_after(data, year_threshold):

а выводить таблицу на экран функцией def print_table(data):

Офлайн

#2 Янв. 3, 2021 11:09:22

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

Фильтрация таблицы

bat_av
Поясните пожалуйста простыми словами кто как сможет если в верхнем def print_top5_by_column у нас уже есть print, то зачем нижний кусок кода
Да код просто плохо спроектирован.

Функция вывода таблицы должна выводить всё, а не только первые пять строк. А функция выбора строк по колонке должна только выдавать строки, при этом оставлять таблицу в первоначальном виде. Ну и выбор строк и вывод строк не должны находиться в одной функции, потому что функция должна делать одно конкретное действие, а не все действия сразу.

Вот пример, который разделяет выборку и вывод
  
>>> def get_top_n(data, column, number):
...     return sorted(data, key=lambda i: i[column - 1])[:number]
... 
>>> def print_data(data):
...     header = (' {:^10} | {:^10} | {:^10} '
...               '| {:^10} | {:^10}'.format(
...                   'a', 'b', 'c', 'd', 'e'))
...     splitter = '-' * len(header)
...     print(header)
...     print(splitter)
...     for row in data:
...         text = (' {:>10} | {:>10} | {:>10} '
...                 '| {:>10} | {:>10}'.format(
...                     row[0], row[1], row[2], row[3], row[4]))
...         print(text)
... 
>>> def print_data_view_abe(data):
...     header = ' {:^10} | {:^10} | {:^10} '.format('a', 'b', 'e')
...     splitter = '-' * len(header)
...     print(header)
...     print(splitter)
...     for row in data:
...         text = ' {:>10} | {:>10} | {:>10}'.format(row[0], row[1], row[4])
...         print(text)
... 
>>> data = [['a1', 'b2', 'c3', 'd4', 'e5'],
...         ['a2', 'b3', 'c4', 'd5', 'e1'],
...         ['a3', 'b4', 'c5', 'd1', 'e2'],
...         ['a4', 'b5', 'c1', 'd2', 'e3'],
...         ['a5', 'b1', 'c2', 'd3', 'e4']]
>>> 
>>> # Выводим всю таблицу
... print_data(data)
     a      |     b      |     c      |     d      |     e     
---------------------------------------------------------------
         a1 |         b2 |         c3 |         d4 |         e5
         a2 |         b3 |         c4 |         d5 |         e1
         a3 |         b4 |         c5 |         d1 |         e2
         a4 |         b5 |         c1 |         d2 |         e3
         a5 |         b1 |         c2 |         d3 |         e4
>>> 
>>> # Выводим три строки таблицы
... print_data(data[:3])
     a      |     b      |     c      |     d      |     e     
---------------------------------------------------------------
         a1 |         b2 |         c3 |         d4 |         e5
         a2 |         b3 |         c4 |         d5 |         e1
         a3 |         b4 |         c5 |         d1 |         e2
>>> 
>>> # Выводим представление из трёх колонок
... # Сортируем строки по первой колонке "a"
... # Берём три строки сверху
... print_data_view_abe(get_top_n(data, 1, 3))
     a      |     b      |     e      
--------------------------------------
         a1 |         b2 |         e5
         a2 |         b3 |         e1
         a3 |         b4 |         e2
>>> 
>>> # Выводим представление из трёх колонок
... # Сортируем строки по пятой колонке "e"
... # Берём четыре строки сверху
... print_data_view_abe(get_top_n(data, 5, 4))
     a      |     b      |     e      
--------------------------------------
         a2 |         b3 |         e1
         a3 |         b4 |         e2
         a4 |         b5 |         e3
         a5 |         b1 |         e4
>>>
Тут есть как вывод всей таблицы, так и вывод заданного представления. При этом сортировка строк таблицы по колонке проводится отдельно и не меняет порядок строк в исходной таблице. Поэтому эту же таблицу можно применять в других выборках, где сортировка таблицы не требуется или запрещена. (Если ты постоянно будешь пересортировывать таблицу, а таблица будет большой, то у тебя время на сортировку будет тратиться впустую.)


tags: table columns



Отредактировано py.user.next (Янв. 3, 2021 12:34:18)

Офлайн

#3 Янв. 3, 2021 11:36:18

bat_av
Зарегистрирован: 2021-01-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация таблицы

СПАСИБО!!!

Офлайн

#4 Апрель 1, 2024 16:28:17

reyiviy120
Зарегистрирован: 2024-03-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация таблицы

Военные фильмы всегда имели особое место в кинематографе, предлагая зрителям не просто истории о конфликтах, но и глубокие размышления о цене человеческой жизни, мужестве, патриотизме и жертвоприношении. Они заставляют задуматься о том, как война влияет на индивидуальные судьбы и общественные изменения. Для тех, кто ценит этот жанр и хочет погрузиться в мир военных событий через кинематограф, я бы рекомендовал просмотреть коллекцию военных фильмов на этом сайте https://onlinefilms.top/genre-g-voennyj . Здесь собраны произведения, позволяющие более глубоко понять историю и влияние военных конфликтов на человечество.

Отредактировано reyiviy120 (Апрель 5, 2024 20:51:20)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version