Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 31.01.2025
Сообщений: 4

Получение списка по условию

31.01.2025, 22:04. Показов 2139. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна функция, которая принимает список и функцию, возвращающую True или False и на список.
Функция должна перебирать ВСЕ варианты списка, пока функция из аргумента "condition" не ответит на список положительным булевым значением. Если такого варианта нет - возврат None.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2025, 22:04
Ответы с готовыми решениями:

Условие на продолжение алгоритма
Задача простая, если counter меньше 15, то нужно выполнять условие1, если больше, то условие два пробовал counter =...

Условие с регулярками
Не получается создать условие вида: если нет совпадений, тогда выполняем тело условия for url in links: last_addr =...

Почему ругается на условие в IF?
Есть код: s = input() i = 0 j = i+1 cnt = 0 for i in s: if s == s: cnt += 1 print(cnt) Почему он...

10
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,291
01.02.2025, 09:26
такую задачу могут понять не все. вернее понять могут не только лишь все, мало кто может это делать
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
01.02.2025, 09:38
Student21040, Это на каком языке написано?

Попробуем разобраться. На вход разрабатываемой функции передается некий список и функция f, принимающая список и возвращающая True или False.

Разрабатываемая функция должна строить перестановки исходного списка, применять к ним функцию f до тех пор, пока f не вернет True. Что вернуть в этом случае?

Если f для всех перестановок возвращает False - вернуть None.

Так?

Добавлено через 7 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import itertools
 
def foo(f,lst):
    for q in itertools.permutations(lst):
        if f(q):
            return q
    return None
    
    
w=[4,5,-2,12]
 
def f(x):  # функция вернет True, если её аргумент - упорядоченный список/кортеж
    n=len(x)
    for i in range(n-1):
        if x[i] > x[i+1]:
            return False
    return True        
 
print(foo(f,w))
Вывод:

(-2, 4, 5, 12)
2
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,291
01.02.2025, 09:41

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
Что вернуть в этом случае?
Вот валит гад!

2
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,204
01.02.2025, 10:42
Catstail, да уж... это как можно было перевод сделать из подобного условия?!!! И ведь, если вчитаться и правильно знаки препинания расставить, то можно и понять, что там зашифровано...

Цитата Сообщение от Catstail Посмотреть сообщение
применять к ним функцию f до тех пор, пока f не вернет True. Что вернуть в этом случае?
Ну, два варианта, либо True, либо вариант самого списка...
Осталось только выяснить, а что там, в том в списке должна проверять эта функция f из аргументов. А то получится какая-нибудь "not condition"
1
0 / 0 / 0
Регистрация: 31.01.2025
Сообщений: 4
01.02.2025, 16:23  [ТС]
Catstail, походу не так разъяснился.

Нужно, чтобы функция перебирала все варианты списка (не перестановка значений) до тех пор, пока функция из аргумента не вернёт значение True. В случае отсутствия вариантов (когда никакой не подошёл под условие) - вернуть NoneType.

(по-моему стало яснее)

Добавлено через 4 минуты
Язык программирования - Python.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
01.02.2025, 17:55
Цитата Сообщение от Student21040 Посмотреть сообщение
Нужно, чтобы функция перебирала все варианты списка
- что это? Приведи пример "всех вариантов списка".

Добавлено через 1 минуту
Цитата Сообщение от Student21040 Посмотреть сообщение
(по-моему стало яснее)
- увы, нет.
0
0 / 0 / 0
Регистрация: 31.01.2025
Сообщений: 4
01.02.2025, 18:53  [ТС]
Catstail, пример:

входной список: [1,2,3]

варианты:
[1]
[2]
[3]
[1,2]
[2,3]
[1,3]
[1,2,3]

чё-то типо такого
0
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,204
01.02.2025, 19:24
Цитата Сообщение от Student21040 Посмотреть сообщение
по-моему стало яснее
не поверите... ничуть не яснее...

Цитата Сообщение от Student21040 Посмотреть сообщение
все варианты списка (не перестановка значений)
Цитата Сообщение от Student21040 Посмотреть сообщение
когда никакой не подошёл под условие
Где? Условие-то какое? Чего перебирать, что с чем сравнивать?

Добавлено через 1 минуту
Цитата Сообщение от Student21040 Посмотреть сообщение
чё-то типо такого
т.е. все элементы списка в различных сочетаниях...
Но условие-то какое? True в каком случае возвращать?
0
0 / 0 / 0
Регистрация: 31.01.2025
Сообщений: 4
01.02.2025, 19:36  [ТС]
Python
1
2
if condition(combination):
    return combination
А если комбинации отсутствуют, то возврат None.

Python
1
2
def condition(lst):
    return <какое-то условие>
Перебирать комбинации. Пример:

входной список: [1,2,3]

варианты:
[1]
[2]
[3]
[1,2]
[2,3]
[1,3]
[1,2,3]

Каждый передавать в condition и проверять результат проверки, как было написано выше.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
01.02.2025, 22:17
Лучший ответ Сообщение было отмечено Student21040 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from itertools import chain, combinations
 
def powerset(lst):
    # powerset([1,2,3]) → [1], [2]. [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]
    return map(list, chain.from_iterable(combinations(lst, r) for r in range(1, len(lst)+1)))
 
def first_true(iterable, default=None, predicate=None):
    # first_true([a,b], x, f) → a if f(a) else b if f(b) else x
    return next(filter(predicate, iterable), default)
 
def foo(f, lst):
    return first_true(powerset(lst), predicate=f)
 
 
print(foo(f, lst))
Добавлено через 15 минут
Если опустить промежуточные функции, то получается так:
Python
1
2
3
4
5
from itertools import chain, combinations
 
def foo(f, lst):
    powerset = map(list, chain.from_iterable(combinations(lst, r) for r in range(1, len(lst)+1)))
    return next(filter(f, powerset), None)
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2025, 22:17
Помогаю со студенческими работами здесь

Условие в массиве, как сравнить?
Есть массив: time = Условие, если больше 10, то. Попытался сделать так: for i in range(len(time)): if int(time)...

Условие в тексте сообщения
Здравствуйте, столкнулся с такой ситуацией: def abc(a,b,c): return &quot;&quot;&quot; День добрый {a}, какой то текст {b}...

Нужно составить условие
Нужно составить следующее условие Если приложение 1 активно, то ничего не происходит, иначе перезапуск приложения 1 Помогите...

Не срабатывает условие
Доброго времени суток. В чем проблема, почему не проверяет значения по диагонали ? Суть программы определить победителя в игре...

Условие с in
Разбираюсь в коде на языке питон. for j in r: if j in x and j in y: match+=1 break ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru