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

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

17.12.2020, 18:07. Показов 2111. Ответов 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
 Аватар для Рыжий Лис
5972 / 3734 / 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,753
17.12.2020, 18:37  [ТС]
Цитата Сообщение от supmener Посмотреть сообщение
не через sorted, а вот так
Я немного неправильно написал. Сначала один вариант, а этот следующий с сортировкой в обратной последовательности (код с конца). 18 задача.
Миниатюры
Сортировка списка  
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 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,753
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
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.12.2020, 16:45
Без создания переменной maximal - можно.

А так - нет.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,753
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
 Аватар для Рыжий Лис
5972 / 3734 / 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,753
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,753
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
 Аватар для Рыжий Лис
5972 / 3734 / 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,753
19.12.2020, 13:39  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Сообщение от supmener Посмотреть сообщение
print(len([e1 for e1 in ls4 if e1 < 0]))
Сейчас уже не этот код имел в виду, а более сложный.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru