2 / 2 / 1
Регистрация: 04.10.2012
Сообщений: 51

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

05.02.2020, 16:15. Показов 1302. Ответов 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
38174 / 21109 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 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
38174 / 21109 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 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): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru