Scheme和Python的唯一函数迭代器
嗨,我目前正在复习课程中的一些材料,我很难想出一个函数,我们称之为“unique”,它从一组列表中生成一个只包含唯一数字的列表 所以对于python,我考虑使用OOP和迭代器Scheme和Python的唯一函数迭代器,python,oop,iterator,scheme,Python,Oop,Iterator,Scheme,嗨,我目前正在复习课程中的一些材料,我很难想出一个函数,我们称之为“unique”,它从一组列表中生成一个只包含唯一数字的列表 所以对于python,我考虑使用OOP和迭代器 >>> You have a list (1, 3, 3, 3, 5) Return the list (1, 3, 5) 这就是我想的,但我不确定 Class Unique: def __init__(self, s): self.s = iter(s)
>>> You have a list (1, 3, 3, 3, 5)
Return the list (1, 3, 5)
这就是我想的,但我不确定
Class Unique:
def __init__(self, s):
self.s = iter(s)
def __iter__(self):
return self
def __next__(self):
不过,我不确定该如何处理这个函数的下一个功能。我也很想知道如何创建一个函数,该函数使用与上面相同的方法,但使用scheme。提前感谢您的任何评论或帮助。最直接的方法可能是使用Python的
set
builtin
def unique(*args):
result = set() # A set guarantees the uniqueness of elements
result = result.union(*args) # Include elements from all args
result = list(result) # Convert the set object to a list
return result
没必要,但你想上课
class Unique:
def __init__(self):
self._list = self.user_input()
def user_input(self):
_list = raw_input()
_list = _list.split(' ')
[int(i) for i in _list]
return _list
def get_unique(self):
self._set = set(self._list)
return list(self._set)
obj = Unique()
print obj.get_unique()
在scheme中,使用类似于中定义的
union
函数,您可以编写如下内容:
(定义(唯一列表)
(如果(空列表)
'()
(联合(唯一(cdr列表))(车辆列表)))
以下是Racket中的一个解决方案:
(define (unique xs) (set->list (list->set xs)))
解释:
> (list->set '(1 2 2 4 7))
(set 1 2 4 7)
函数list->set
将列表转换为集合
如果我们想要元素列表而不是集合,我们可以使用set->list
将集合转换回列表
> (set->list (list->set '(1 2 2 4 7)))
'(7 4 2 1)
因此,一般功能可定义为:
> (define (unique xs) (set->list (list->set xs)))
让我们测试一下:
> (unique '(1 1 1 2 2 4 8 2))
'(8 4 2 1)
在计划中有没有办法做到这一点?嗨,谢谢你们的回复,这就是我想要理解的!在计划中有没有办法做到这一点?对此我很抱歉。这个计划其实不是我的专长。