【发布时间】:2016-10-15 08:38:57
【问题描述】:
我的课程处理整数列表并计算它们,因此它们没有重复出现的值。我已经实现了一个新方法“intersect”,它接受两个 intSet 对象并创建一个新对象,其值出现在两个对象列表 (vals) 中。
最初我在方法中创建一个新列表(而不是一个对象)以添加在两个列表中找到的整数,但是我认为创建一个新对象并将值添加到新对象中的 val 是合适的。但是我收到错误NameError: global name 'inSet' is not defined
这是我的代码:
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)
额外问题,大部分代码是由管理员为 MOOC 6.00.1x 编写的。我只需要实现“相交”方法。为什么在 list [] 大括号上使用用于字典目的的大括号?
【问题讨论】:
-
你忘记了
t的名字inSet -
奖励答案:在 Python 中创建
set您可以使用set()或{}即。{1,2,3,2,5} -
天啊,Python 中的 Scala 练习?!
-
以您的方式使用列表理解肯定是一种不好的做法。作为副作用,您创建了 None 的寄生列表,这不是您的意图。简单的循环在这里更干净。