Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Python 函数获取一个列表并返回一个仅包含原始列表中唯一元素的列表?_Python_List_Python 3.x - Fatal编程技术网

Python 函数获取一个列表并返回一个仅包含原始列表中唯一元素的列表?

Python 函数获取一个列表并返回一个仅包含原始列表中唯一元素的列表?,python,list,python-3.x,Python,List,Python 3.x,我正在阅读Think Python教科书,其中一个问题是生成一个函数,该函数接受一个列表并返回一个仅包含原始列表中唯一元素的列表。到目前为止,我得到的是: def remove_duplicates(l): index = 0 new_l = [] dup_l = [] while index < len(l): if l[index] in l[index+1:] or l[index] in new_l: dup_

我正在阅读Think Python教科书,其中一个问题是生成一个函数,该函数接受一个列表并返回一个仅包含原始列表中唯一元素的列表。到目前为止,我得到的是:

def remove_duplicates(l):
    index = 0
    new_l = []
    dup_l = []
    while index < len(l):
        if l[index] in l[index+1:] or l[index] in new_l:
            dup_l += [l[index]]
            index = index + 1
        elif l[index] in dup_l:
            index = index + 1
        else:
            new_l += [l[index]]
    return new_l
def删除重复项(l):
索引=0
新的
dup_l=[]
当指数

我觉得必须有一种更简洁、更通俗的方法来编写这个函数。有人能帮助这个初学者吗?

我想你想手动操作,理解python语法,所以这是一种方法

更新对于仅获取只出现一次的元素而不删除重复项的注释,您可以将
if
条件替换为
if L.count(element)=1:
,它将根据您的请求返回
[1,2,4]

def unique(L):
    uniqueElements = []
    for element in L:
        if element not in uniqueElements:
            uniqueElements.append(element)
    return uniqueElements

print(unique([1,2,3,3,4]))
如果您想深入研究python语法,您可以做一个简单的测试并进一步简化它,同时仍然不使用
set
方法,该方法会丢失元素的顺序:

def unique(L): return [element for element in L if L.count(element) == 1] 

我把你骗到了一篇关于返回一个只有唯一元素才能保持顺序的列表的规范文章。如果顺序不重要,只需使用
返回列表(set(l))
。我不同意这个重复项,因为Jeremy似乎在寻求手动执行的方法,所以我添加了这个答案。标记为重复可能会出现不太新的用户友好,非常感谢大家!实际上,我试图解决的问题是创建一个列表,该列表将返回
print(unique([1,2,3,3,4])-->[1,2,4]
,这是因为我只需要输入列表中唯一的元素,而不只是删除重复项的列表。还有,我的注释格式如何?将
if
条件替换为
if L.count(element)==1:
do get
[1,2,4]