Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Сортировка списка

17.12.2020, 18:07. Показов 2158. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По мотивам одного видео сортировка списка не через sorted, а вот так. Не работает (там версия Пайтона 2.х в примере).
Python
1
2
3
4
5
6
7
ls = [0, -1, 4, 4, 1, 1, -1, -4, -4, -4]
def fncmp(a,b):
    if a > b: return -1
    if a < b: return 1
    return 0
ls1 = sorted(ls, fncmp)
print(ls1)
Code
1
2
3
4
Traceback (most recent call last):
  File "C:\pitoner\генераторы списков\a1-1.py", line 13, in <module>
    ls1 = sorted(ls, fncmp)
TypeError: sorted expected 1 argument, got 2
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2020, 18:07
Ответы с готовыми решениями:

Сортировка списка
Здравствуйте, имею подобный список , , , ]. Подскажите, как его можно отсортировать? Мне важно чтобы 2 элемент и 3 элементы были...

Сортировка списка
Добрый день, необходимо удалить из списка все значения, которые меньше определенного значения. При использовании цикла for на второй...

Сортировка списка
Подскажите, пожалуйста. допустим у нас есть список, а в нем еще несколько списков в которых находятся имена и их значения. нужно эти списки...

17
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
17.12.2020, 18:14
Из третьего питона (или раньше?) удалили параметр cmp

Было так:
Python
1
ls1 = sorted(ls, cmp=fncmp)
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
17.12.2020, 18:37  [ТС]
Цитата Сообщение от supmener Посмотреть сообщение
не через sorted, а вот так
Я немного неправильно написал. Сначала один вариант, а этот следующий с сортировкой в обратной последовательности (код с конца). 18 задача.
Миниатюры
Сортировка списка  
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
17.12.2020, 19:02
Чувак, я сегодня залпом смотрел более пяти часов видео по расту. Меня сегодня от вида кода просто тошнит.

Для начала перестань прыгать со третьей версии на вторую версию питона и обратно и выбери уже одну. Так как второй питон умер, то выбор очевиден: python 3.7.

Как только ты выберешь третий питон, ты поймёшь, что
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
удалили параметр cmp
Который был не так уж и нужен. И что списки прекрасно сортируются и без самописной функции сравнения
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.

A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
18.12.2020, 16:10  [ТС]
А есть ли способ print писать не в отдельной строке, а в строке, где присвоение переменной происходит?
Python
1
2
3
4
5
from random import randint
ls = [randint(-4, 4) for e1 in range(10)]
print(ls)
maximal = max(ls)
print(maximal)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.12.2020, 16:45
Без создания переменной maximal - можно.

А так - нет.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
18.12.2020, 16:56  [ТС]
А что делает код e1 for e1?
Python
1
2
3
print('#010 найти количество отрицательных элементов на времени в видео 6 35')
ls4 = [3, -5, 6, 1, -10]
print(len([e1 for e1 in ls4 if e1 < 0]))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.12.2020, 17:34
Нарисуй блок-схему - поймёшь.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
18.12.2020, 18:02
Цитата Сообщение от supmener Посмотреть сообщение
А есть ли способ print писать не в отдельной строке, а в строке, где присвоение переменной происходит?
С версии 3.8 можно, но не нужно. Всё-таки оператор "морж" := введён не для запутывания функции print.
Цитата Сообщение от supmener Посмотреть сообщение
А что делает код e1 for e1?
ну это, вместе с последующим, можно прочитать примерно как "создать список из элементов e1 для всех e1 из списка ls4 если они меньше 0".
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
19.12.2020, 12:14  [ТС]
А что делает j for j?
Python
1
2
3
4
5
#15 определить индексы элементов массива, значение которых лежит в указанном пределе
#Функция enumerate возвращает кроме элемента массива его индекс
ls5 = [16, 9, 0, 9, 9, 4, 1, 9, 4, 1]
ls1 = [j for j, e1 in enumerate(ls5) if e1 > -2 and e1 < 3]
print(ls1)
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Нарисуй блок-схему - поймёшь.
Как её нарисую, если не понимаю принцип работы?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
19.12.2020, 12:17
Цитата Сообщение от supmener Посмотреть сообщение
А что делает j for j?
j, e1 это кортеж, хоть и нет скобок. enumerate выдаёт пару значений - индекс и элемент списка. Индекс попадает в j, а элемент в e1. Дальше всё аналогично.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
19.12.2020, 12:24  [ТС]
А если бы были скобки, то как бы это выглядело? А что делает j for j?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
19.12.2020, 12:28
Это выглядело бы понятнее для новичка, я думаю.
Python
1
ls1 = [j for (j, e1) in enumerate(ls5) if e1 > -2 and e1 < 3]
Но скобки здесь не нужны и их не ставят.

Добавлено через 1 минуту
Список составляется из индексов элементов для которых выполняется условие.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.12.2020, 12:34
Цитата Сообщение от supmener Посмотреть сообщение
Как её нарисую, если не понимаю принцип работы?
Чувак, программа работает точно так же, как ты мог бы сделать эту же работу руками.

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

Цитата Сообщение от supmener Посмотреть сообщение
print(len([e1 for e1 in ls4 if e1 < 0]))
Эта строка читается так:

Python
1
2
3
4
5
6
7
8
9
# print() - вызов функции, нам пока не интересен
# len() - вызов функции, нам пока не интересен
lss = []  # список с элементами
for e1 in ls4:  # ой, цикл
    if e1 < 0:  # ой, какая-то хрень
        lss.append(e1)
# вспоминаем про вызовы функций
count = len(lss)
print(count)
Если ты и по этому коду не нарисуешь блок-схему - то делать в программировании тебе нечего.
2
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
19.12.2020, 13:39  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Сообщение от supmener Посмотреть сообщение
print(len([e1 for e1 in ls4 if e1 < 0]))
Сейчас уже не этот код имел в виду, а более сложный.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.12.2020, 14:34
Ты более простой ещё понять не можешь, куда тебе более сложный?
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
19.12.2020, 14:40
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
А так - нет.
можно же
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
19.12.2020, 15:18
Параметр cmp из sorted удалили, но оставили возможность конвертирования своей cmp функции в key совместимую:
cmp keyword was removed in Python 3. You can now use key=functools.cmp_to_key(<function>) after importing functools
Иногда бывает нужна.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>> import ctypes
>>> from functools import cmp_to_key
>>> from pprint import pprint
>>> StrCmpLogical = ctypes.windll.shlwapi.StrCmpLogicalW
>>> data = ['09-01.2.12И2-0-1.xls', '09-01.2.12И2-0-2.xls', '09-01.2.13И2-2.xls', '09-01.2.14И2-1.xls', '09-01.2.14И2-2И1.xls', '09-01.2.15И2-1.xls', '09-01.2.15И2-2.xls', '09-01.2.18И1-1.xls', '09-01.2.6И2-0-2.xls', '09-01.2.8И3-2-1.xls']
>>> pprint(sorted(data,key=cmp_to_key(StrCmpLogical))) # специальная виндовая сортировка
['09-01.2.6И2-0-2.xls',
 '09-01.2.8И3-2-1.xls',
 '09-01.2.12И2-0-1.xls',
 '09-01.2.12И2-0-2.xls',
 '09-01.2.13И2-2.xls',
 '09-01.2.14И2-1.xls',
 '09-01.2.14И2-2И1.xls',
 '09-01.2.15И2-1.xls',
 '09-01.2.15И2-2.xls',
 '09-01.2.18И1-1.xls']
>>> # Обычная сортировка
>>> pprint(sorted(data))
['09-01.2.12И2-0-1.xls',
 '09-01.2.12И2-0-2.xls',
 '09-01.2.13И2-2.xls',
 '09-01.2.14И2-1.xls',
 '09-01.2.14И2-2И1.xls',
 '09-01.2.15И2-1.xls',
 '09-01.2.15И2-2.xls',
 '09-01.2.18И1-1.xls',
 '09-01.2.6И2-0-2.xls',
 '09-01.2.8И3-2-1.xls']
>>>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2020, 15:18
Помогаю со студенческими работами здесь

Сортировка списка
Есть вот такой список, как его отсортировать в порядке убывания по последнему числу в каждом индексе? Чтоб получилось примерно так ...

Сортировка списка
Имею вот такой список , , , , , , , , , , , , , , , , , , , , , , , , , , , ] полученный при чтении из файла вот так with...

Сортировка списка
ребят подскажите пожалуйста как сравнить два таких списка и сделать 1 список но только с уникальными записями? queue = queue1 =

Сортировка списка
Имеется список: list = Как отсортировать список так, чтобы получилось:

Сортировка списка
Добрый день уважаемые форумчане. У меня вопрос. Есть некий список как его отсортировать по дате возрастания? images_list =


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru