2016-06-02 20 views
0

eine ganze Zahl k gegeben, ich habe einen Weg programmiert, um alle Partitionen von k zu nehmen, so dassSage (‚Python-like‘ Sprache) Attributfehler „IntegerListsLex_with_category.element_class“ Objekt

(1) jede Partition hat höchstens n Einträge (wobei n auch angegeben ist)

(2) Jede Partition hat keine ungeraden Zahlen.

Ich kategorisierte auch die Liste dieser Partitionen in absteigender Reihenfolge. Ich kann jedoch keine Nullen am Ende einer bestimmten Partition in der Liste anhängen, so dass alle Partitionen n-Tupel sind.

# Define n and k 
(k, n) = (10, 5) 

# Find partitions of k of max length n, and put partitions in list B 
B = Partitions(k, max_length=n).list() 

# Extracts partitions with repeated odd components and creates a separate list for them, namely B_Repeated_Odds 
B_Repeated_Odds = [] 
for i in range(0, len(B)): 
    for j in range(0, len(B[i])): 
     for l in range(0, len(B[i])): 
      if B[i][j]%2 == 1: 
       if B[i][l]%2 == 1: 
        if B[i][j] == B[i][l]: 
         if j != l: 
          B_Repeated_Odds.append(B[i]) 

# Remove duplicates from B_Repeated_Odds 
B_Unique = uniq(B_Repeated_Odds) 

# Remove unwanted partitions from original list B, and sort finalized list in descending order 
Improper_Part = Set(B).difference(Set(B_Unique)) 
Proper_Part = sorted(Improper_Part, reverse=true) 

for i in range(0, len(Proper_Part)): 
    while len(Proper_Part[i]) < n: 
     Proper_Part[i].append(0) 

Die oben erwähnte Problem tritt in den letzten drei Zeilen Code, mit einer Fehlermeldung „Fehler Attribut:.‚IntegerListsLex_with_category.element_class‘Objekt hat kein Attribut‚anhängen‘“

Meine Frage speziell ist, wie kann ich die Typen der Partitionen innerhalb der Liste Proper_Part von IntegerListsLex_with_category.element_class zu Liste (oder jedes andere Objekt, wo der Append-Befehl anwendbar ist) ändern? Oder wenn jemand einen besseren Ansatz sieht, würde ich es gerne hören.

Antwort

0

Um meine eigene Frage, die geeigneten Ersatz für die unteren drei Zeilen Code zu beantworten ist die folgende:

# Convert each partition from IntegerListsLex_with_category.element object to list 
C = [] 
for i in range(0, len(Proper_Part)): 
    C.append(list(Proper_Part[i])) 
    while len(C[i]) < n: 
     C[i].append(0)