Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 04.10.2012
Сообщений: 51

Комбинаторика. вывести на экран все возможные варианты товара на основании характеристик

05.02.2020, 16:15. Показов 1279. Ответов 7

Студворк — интернет-сервис помощи студентам
Ребята, помогите с реализацией, немогу вдуплить ...
Суть задачи в том что на основании различных характеристик нужно построить разновидность товаров (например автомобиля). И так, есть 3 списка:
['цвет', 'объем двигателя', 'материал салона'] # названия характеристик
['красный', 'синий'] # значения первой характеристики(цвет)
[1.3л, 1.6л, 2.0л ] # значения второй характеристики(объем двигателя)
['кожа', 'замш', 'велюр'] # значения третьей характеристики(материал салона)

По итогу надо получить такое:
цвет -красный, объем двигателя -1.3л, материал салона- кожа
цвет -красный, объем двигателя -1.3л, материал салона- замш
цвет -красный, объем двигателя -1.3л, материал салона- велюр
цвет -синий, объем двигателя -1.3л, материал салона- кожа
цвет -синий, объем двигателя -1.3л, материал салона- замш
....
....
P.S. Т.е. нужно скомбинировать все возможные варианты товара
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2020, 16:15
Ответы с готовыми решениями:

Комбинаторика: вывести все возможные варианты
Вывести все возможные варианты слов, которые можно составить из первых 4-х букв английского алфавита(буквы не должны повторяться),...

Комбинаторика - как получить все возможные варианты?
Всем привет! Есть задача. Даны четыре буквы A B C D. Всего можно получить 24 варианта смешения этих букв, так как 4! = 24. Я выяснил,...

Вывести на экран все возможные варианты покупок
Нужно вывести на экран все возможные варианты покупок на 100р, допустим bull=5 cow=2.5 calf=0.5. И надо чтобы было куплено как минимум по...

7
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
05.02.2020, 16:25
Сначала сделайте циклами, а потом смотрите модуль itertools.
0
2 / 2 / 1
Регистрация: 04.10.2012
Сообщений: 51
05.02.2020, 16:44  [ТС]
как именно это можно сделать циклами, не подскажите ?
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
05.02.2020, 17:03
Три вложенных цикла. Типа
Python
1
2
3
4
for icv in range(len(cv))
    for iod in range(len(od))
        for ims in range(len(ms))
            print(cv[icv], od[iod], ms[ims])
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.02.2020, 17:04
Python
1
2
3
4
5
6
>>> [(x,y,z) for x in ["красный","белый"] for y in ["bmw","audi"] for z in ["дорогой","дешевый"]]
[('красный', 'bmw', 'дорогой'), ('красный', 'bmw', 'дешевый'), ('красный', 'audi', 'дорогой'), ('красный', 'audi', 'дешевый'), ('белый', 'bmw', 'дорогой'), ('белый', 'bmw', 'дешевый'), ('белый', 'audi', 'дорогой'), ('белый', 'audi', 'дешевый')]
>>> import itertools
>>> list(itertools.product(["красный","белый"], ["bmw","audi"],["дорогой","дешевый"]))
[('красный', 'bmw', 'дорогой'), ('красный', 'bmw', 'дешевый'), ('красный', 'audi', 'дорогой'), ('красный', 'audi', 'дешевый'), ('белый', 'bmw', 'дорогой'), ('белый', 'bmw', 'дешевый'), ('белый', 'audi', 'дорогой'), ('белый', 'audi', 'дешевый')]
>>>
P.S. Декартово произведение.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
05.02.2020, 17:12
Python
1
2
3
4
5
6
clist=['красный', 'синий'] # значения первой характеристики(цвет)
cvol=[1.3, 1.6, 2.0] # значения второй характеристики(объем двигателя)
csurf=['кожа', 'замш', 'велюр'] # значения третьей характеристики(материал салона)
 
res=[(color,volume,surface) for color in clist for volume in cvol for surface in csurf]
print(res)
Результат:

[('красный', 1.3, 'кожа'), ('красный', 1.3, 'замш'), ('красный', 1.3, 'велюр'), ('красный', 1.6, 'кожа'), ('красный', 1.6, 'замш'), ('красный', 1.6, 'велюр'), ('красный', 2.0, 'кожа'), ('красный', 2.0, 'замш'), ('красный', 2.0, 'велюр'), ('синий', 1.3, 'кожа'), ('синий', 1.3, 'замш'), ('синий', 1.3, 'велюр'), ('синий', 1.6, 'кожа'), ('синий', 1.6, 'замш'), ('синий', 1.6, 'велюр'), ('синий', 2.0, 'кожа'), ('синий', 2.0, 'замш'), ('синий', 2.0, 'велюр')]
0
2 / 2 / 1
Регистрация: 04.10.2012
Сообщений: 51
05.02.2020, 17:23  [ТС]
везде пропущено название характеристики, перебраны только значения, а надо что бы сперва название характеристики, а потом значение.
Просто перебрать в цикле это у меня получилось ..

Добавлено через 1 минуту
Необходимо получить в формате: цвет -красный, объем двигателя -1.3л, материал салона- кожа
Предлагаемый вариант Вами: красный, 1.3л, кожа

Добавлено через 7 минут
вопрос закрыт потому что дальше ход событий ясен всем спасибо.

Задачу привел на примитивном уровне, и вроде все понятно, но в реальной задаче условия немного другие и другая структура входящих данных, поэтому я там забуксовал, буду думать дальше

Все большое спасибо за помощь !
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
05.02.2020, 17:23
Python
1
2
3
4
5
6
clist=['красный', 'синий'] # значения первой характеристики(цвет)
cvol=[1.3, 1.6, 2.0] # значения второй характеристики(объем двигателя)
csurf=['кожа', 'замш', 'велюр'] # значения третьей характеристики(материал салона)
 
res=[('цвет-'+color,'рабочий объем-'+str(volume)+'л','отделка-'+surface) for color in clist for volume in cvol for surface in csurf]
print(res)
Результат:


[('цвет-красный', 'рабочий объем-1.3л', 'отделка-кожа'), ('цвет-красный', 'рабочий объем-1.3л', 'отделка-замш'), ('цвет-красный', 'рабочий объем-1.3л', 'отделка-велюр'), ('цвет-красный', 'рабочий объем-1.6л', 'отделка-кожа'), ('цвет-красный', 'рабочий объем-1.6л', 'отделка-замш'), ('цвет-красный', 'рабочий объем-1.6л', 'отделка-велюр'), ('цвет-красный', 'рабочий объем-2.0л', 'отделка-кожа'), ('цвет-красный', 'рабочий объем-2.0л', 'отделка-замш'), ('цвет-красный', 'рабочий объем-2.0л', 'отделка-велюр'), ('цвет-синий', 'рабочий объем-1.3л', 'отделка-кожа'), ('цвет-синий', 'рабочий объем-1.3л', 'отделка-замш'), ('цвет-синий', 'рабочий объем-1.3л', 'отделка-велюр'), ('цвет-синий', 'рабочий объем-1.6л', 'отделка-кожа'), ('цвет-синий', 'рабочий объем-1.6л', 'отделка-замш'), ('цвет-синий', 'рабочий объем-1.6л', 'отделка-велюр'), ('цвет-синий', 'рабочий объем-2.0л', 'отделка-кожа'), ('цвет-синий', 'рабочий объем-2.0л', 'отделка-замш'), ('цвет-синий', 'рабочий объем-2.0л', 'отделка-велюр')]

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2020, 17:23
Помогаю со студенческими работами здесь

Вывести на экран все возможные варианты решения уравнения
Как решить данную задачу? Даны четыре элемента разных диаметров(пользователь указывает их диаметры), которые определяют угл изготавлеемой...

Перебрать все возможные варианты расположения заполненных ячеек (комбинаторика)
Есть 12 парных элементов, это значит что каждый элемент имеет две ячейки (всего 24 ячейки получается). 4 ячейки из 24 всегда заполнены....

Комбинаторные алгоритмы. Вывести на экран все возможные варианты действий художника
Помогите пожалуйста написать программу. Условие: Художнику предложили учавствовать в выставке. Право отобрать картины и их количество...

50 тюльпанов нужно расфасовать в подарочные наборы по 3, 5 и 7 цветков. Вывести на экран все возможные варианты букетов
Помогите пожалуйста решить данную задачку по PHP. 50 тюльпанов нужно расфасовать в подарочные наборы по 3, 5 и 7 цветков. Вывести на...

Комбинаторика: вывести все возможные комбинации заданных объектов
Добрый день, может кто-нибудь,пожалуйста, написать код для следующей задачи? Поскольку в комбинаторике не разбираюсь совсем. Дано N...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru