내가의 말을하자, 파이썬 정수의 목록을 가지고 itertools.combinations` 이 정수들. 그래서 3의 정수와 (원하는 출력의 일례를 얻을 - 중량 = [7, 5, 3 : 이들 가중치부분적인 합계는
sums = [ [7], [7+5], [7+3], [7+5+3], [5], [5+3], [3] ]
연결된 I는 함께리스트의리스트가 다른 배열이라의 luggages를 짐의 이름이 형식의 기자 무게 :
luggages = [["samsonite", 7], ["Berkin", 5], ["Catelli", 3] .....]
나는이 방법으로 체중라는 배열을 생성
이weight = numpy.array([c[1] for c in luggages])
나는 짐 이름에 대해이 작업을 수행 할 수 있습니다. 필요합니다. 나는 (제안에) 이런 식으로 itertools.combinations를 사용하려고 :
comb = [combinations(weight, i) for i in range(len(luggages))]
내 목표 : 모든의 max_weight = 23
킬로그램 주어진 내가 여행을 가져올 수있는 수하물 이름의 가능한 모든 부분 집합을 인쇄하려면 부분 집합 합계가 정확히 23KG 인 조건을 만족하는 각 부분 집합의 조합. 간단히 말해서 무게를 합산하면 max_weight = 23
정확히 일치하는 luggages의 이름이있는 목록을 인쇄해야합니다. 마음에 드십시오 : luggages는 각 부분 집합에서 한 번만 선정 될 수 있고 그러나 가능한 한 많은 부분 집합에서 나타날 수있다. 또한 각 하위 집합의 항목 수는 무의미합니다. 합계가 정확히 23 인 경우 수하물 1, 2, 3이 될 수 있습니다.
''당신에게 평평 목록을 제공 [조합 (의 luggages, 난)에서 C의 전 범위에 대한 C (LEN (의 luggages) +1)] 가능한 모든 하위 집합의 하위 집합. 이제 for 루프를 사용하여 반복 할 수 있습니다. 루프 내부에는 현재 하위 집합의 가중치를 더하는 다른 루프가 있습니다. 총 가중치가 일치하면 현재 하위 집합을 다시 반복하여 이름을 출력합니다. 당신은 체중 배열이 정말로 필요하지 않습니다. –
@NiklasB 나는 당신이 무슨 뜻인지 이해했다고 생각하는데, 이것은 많은 도움이되었습니다! 내가 가지고있는 유일한 질문은 모두 C이다. 나는 ..... C 다. 나는 그들이 어떻게 작동하는지 완전히 이해하지 못한다고 생각한다. 내가 그것을 설명 할 수있는 방법은 없을까? 또는 내가 참조 할 수있는 문서? 감사합니다. – user3245453
두 개의 중첩 된'for' 루프가'c' 값을 생성하고리스트의 뒤쪽에 추가되는 것과 같습니다. 다른 질문에 대한 내 의견보기 –