Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme和Python的唯一函数迭代器_Python_Oop_Iterator_Scheme - Fatal编程技术网

Scheme和Python的唯一函数迭代器

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)

嗨,我目前正在复习课程中的一些材料,我很难想出一个函数,我们称之为“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)

     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)

在计划中有没有办法做到这一点?嗨,谢谢你们的回复,这就是我想要理解的!在计划中有没有办法做到这一点?对此我很抱歉。这个计划其实不是我的专长。