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

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

31.01.2025, 22:04. Показов 2163. Ответов 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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
01.02.2025, 09:26
такую задачу могут понять не все. вернее понять могут не только лишь все, мало кто может это делать
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
01.02.2025, 09:41

Не по теме:

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

2
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 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
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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