2017-07-24 5 views
0

Ich habe eine nicht null gesetzt, sagen wir myset. Ich versuche, die Umkehrung seiner Länge auf diese Weise 1/len(myset) zu bekommen, und ich bekomme 0, obwohl die Länge des Satzes nicht so groß ist, so dass seine Inverse Null ist; len(myset) ist in der Größenordnung von 50.Python: inverse von len (set) ist null

Weiß jemand, wie man dies eccounter?

Vielen Dank!

EDIT/UPDATE:

Der Code ist sehr lang, aber hier ist der Teil, wo ich es bin mit:

from random import randint,random,uniform 
import os 
import math 
import cplex 
from datetime import datetime 
from scipy.stats import norm 

class Solving: 
def __init__(self, init): 
    self.init = init   
    return 

def run(self):  

    model=cplex.Cplex() 

    for i in self.init.getGreenNodes() - self.init.getRedNodes(): 
     for j in self.init.getDiscretValuesNb(): 
      model.variables.add(names=["X"+str((i,j))]) 
      model.variables.set_types("X"+str((i,j)),"B") 

    model.variables.add(names=["Da"+str(i)]) 
     model.variables.set_types("Da"+str(i),"C") 

    model.objective.set_sense(model.objective.sense.minimize) 
    model.objective.set_linear("TCost",1) 

    for i in self.init.getGreenNodes() - self.init.getRedNodes(): 
     aa=1/len(self.init.getGreenNodes() - self.init.getRedNodes()) 
     print aa 
     model.linear_constraints.set_coefficients("Cstr1", "Da"+str((i)), aa) 

Dieser Code funktioniert perfecly wenn Python 3.5

+0

Bearbeiten Sie Ihre Frage, um ein vollständiges Codebeispiel mit dem Problem zu erhalten. – Marein

+0

@Marein: Ich habe den Code mit Code-Teil aktualisiert (Das Hall-Skript ist sehr lang und kann es hier nicht posten). – Betty

+1

Sie müssen nicht das gesamte Skript posten, aber versuchen Sie, ein [minimales, vollständiges und überprüfbares Beispiel] zu erstellen (https://stackoverflow.com/help/mcve). – Marein

Antwort

1

Stopp Durchführen einer ganzzahligen Division.

1./foo 
+0

das ist es! Ist es mit allen Versionen 2 von Python oder nur 2.6 verwandt ?! Vielen Dank! – Betty

+1

'int/int' wird zu einem' int' in 2.x führen, wenn 'division' nicht aus' __future__' importiert wurde. In 3.x wird es zu einem 'float' kommen. –