How to alter this code to allow appending to the list?

后端 未结 3 958
春和景丽
春和景丽 2021-01-24 13:10

I have an issue appending or in fact printing anything after this block of code:

reversedPriv = [52,27,13,6,3,2]
array= [9]
var = 0
numA = []
for i in array:
            


        
相关标签:
3条回答
  • 2021-01-24 13:47

    Instead of j it should be var != i:

    reversedPriv = [52,27,13,6,3,2]
    array= [9]
    var = 0
    numA = []
    for i in array:
        for j in reversedPriv:
            while var!= i:
                if j < i:
                    var = var + j
                    numA.append(j)
                    numA.sort()
                    break
                break
    print(numA)
    

    Or without the while,

    reversedPriv = [52,27,13,6,3,2]
    array= [9]
    var = 0
    numA = []
    for i in array:
        for j in reversedPriv:
            if (var != i) and j < i:
                var = var + j
                numA.append(j)
    numA.sort()
    print(numA)
    

    Or,

    reversedPriv = [52,27,13,6,3,2]
    array= [9]
    var = 0
    numA = []
    numA = [sorted([x,y]) for x,y in zip(reversedPriv[:-1],reversedPriv[1:]) if x+y == array[0]][0]
    print(numA)
    

    Output:

    [3, 6]
    
    0 讨论(0)
  • 2021-01-24 14:02

    I am not sure what are you trying to do, but it'seems you want 6 + 3 = 9, append 6,3 to numA

    for it1 in reversedPriv:
        for it2 in reversedPriv:
    
            sumit = it1 + it2     # sum 1st iteraction with 2nd iteraction
    
            if sumit == array[0]: #extract array value from list
    
                if it1 not in numA and it2 not in numA:
                    numA.append(it1)
                    numA.append(it2)
    
    print(numA)
    #[6, 3]
    
    0 讨论(0)
  • 2021-01-24 14:10

    So in general, it's a good idea on SO to be clear about just what the question is, but it's often better to provide the context of your question.

    What you are working on is a fragment of a knapsack solver. As mentioned in my comments below, you may do better to just use or-tools out of the box as follows (taken from https://developers.google.com/optimization/bin/knapsack):

    from ortools.algorithms.pywrapknapsack_solver import KnapsackSolver
    
    def knapsack():
        solver = KnapsackSolver(
           KnapsackSolver.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER,
          'KnapsackExample'
        )
        weights = [[52,27,13,6,3,2]]
        capacities = [9]
    
        solver.Init(weights[0], weights, capacities)
        computed_value = solver.Solve()
    
        packed_items = []
        packed_weights = []
        total_weight = 0
        print('Total value =', computed_value)
        for i in range(len(weights[0])):
            if solver.BestSolutionContains(i):
                packed_items.append(i)
                packed_weights.append(weights[0][i])
                total_weight += weights[0][i]
    
        print('Total weight:', total_weight)
        print('Packed items:', packed_items)
        print('Packed_weights:', packed_weights)
    
    knapsack()
    

    Console:

    Total value = 9
    Total weight: 9
    Packed items: [3, 4]
    Packed_weights: [6, 3]
    
    0 讨论(0)
提交回复
热议问题