Meine Klasse beschäftigt sich mit Listen von Ints und berechnen sie, so dass sie nicht wiederkehrende Werte haben. Ich habe eine neue Methode 'intersect' implementiert, die zwei intSet-Objekte aufnimmt und ein neues Objekt mit den Werten erstellt, die in beiden Objektlisten (vals) vorkommen.Wie erstellt man eine Instanz einer Klasse innerhalb einer Methode innerhalb der Klasse, python
Ursprünglich erstellte ich eine neue Liste innerhalb der Methode (anstelle eines Objekts), um die in beiden Listen gefundenen Ints hinzuzufügen, aber ich dachte, es wäre passend, ein neues Objekt zu erstellen und die Werte zu Val in dem neuen Objekt hinzuzufügen . Allerdings erhalte ich die Fehler NameError: global name 'inSet' is not defined
Hier ist mein Code:
class intSet(object):
"""An intSet is a set of integers
The value is represented by a list of ints, self.vals.
Each int in the set occurs in self.vals exactly once."""
def __init__(self):
"""Create an empty set of integers"""
self.vals = []
def insert(self, e):
"""Assumes e is an integer and inserts e into self"""
if not e in self.vals:
self.vals.append(e)
def member(self, e):
"""Assumes e is an integer
Returns True if e is in self, and False otherwise"""
return e in self.vals
def remove(self, e):
"""Assumes e is an integer and removes e from self
Raises ValueError if e is not in self"""
try:
self.vals.remove(e)
except:
raise ValueError(str(e) + ' not found')
def __str__(self):
"""Returns a string representation of self"""
self.vals.sort()
return '{' + ','.join([str(e) for e in self.vals]) + '}'
def intersect(self, other):
#intersected = []
intersected = inSet()
for x in self.vals:
if x in other.vals:
#intersected.append(x)
intersected.insert(x)
return intersected
a= {-15,-14,-5,-2,-1,1,3,4,11,18}
b= {-12,-3,3,8,12,16,18,20}
set1 = intSet()
set2 = intSet()
[set1.insert(x) for x in a]
[set2.insert(x) for x in a]
print set1.intersect(set2)
Bonus Frage, die meisten der Code durch die Admins für die MOOC geschrieben wurde, 6.00.1x. Ich musste nur die "Schnittpunkt" -Methode implementieren. Warum werden geschweifte Klammern, die für Wörterbuchzwecke verwendet werden, stattdessen in der Liste [] Klammern verwendet?
Sie haben 't' im Namen' inSet' vergessen. – furas
Bonusantwort: In Python zum Erstellen 'set' können Sie' set() 'oder' {} 'ie verwenden. '{1,2,3,2,5}' – furas
OMG, Scala Übung in Python?! – volcano