Python 返回空列表的唯一化

Python 返回空列表的唯一化,python,Python,我是python新手,尝试创建一个函数Uniqueify(L),该函数将给出一个数字列表或一个字符串列表(非空),并返回该列表中唯一元素的列表。 到目前为止,我已经: def Uniquefy(x): a = [] for i in range(len(x)): if x[i] in a == False: a.append(x[i]) return a 看起来a==False:中的if str(x[i])失败了,这导致函数返回一

我是python新手,尝试创建一个函数Uniqueify(L),该函数将给出一个数字列表或一个字符串列表(非空),并返回该列表中唯一元素的列表。 到目前为止,我已经:

def Uniquefy(x):
    a = []
    for i in range(len(x)):
        if x[i] in a == False:
            a.append(x[i])
    return a
看起来a==False:中的
if str(x[i])失败了,这导致函数返回一个空列表。
你们能提供什么帮助?

你们可以根据列表创建一个只包含唯一值的:

>>> s = ["a", "b", "a"]
>>> print set(s)
set(['a', 'b'])
您只需根据仅包含唯一值的列表创建:

>>> s = ["a", "b", "a"]
>>> print set(s)
set(['a', 'b'])

这里最好的选择是使用集合!根据定义,集合只包含唯一的项,将同一项放入两次不会产生两个副本

如果您需要从列表中创建它,并且需要返回列表,请尝试此操作。但是,如果没有特定的原因需要一个列表,那么只需传递一个集合即可(这将是duck键入的方式)


这里最好的选择是使用集合!根据定义,集合只包含唯一的项,将同一项放入两次不会产生两个副本

如果您需要从列表中创建它,并且需要返回列表,请尝试此操作。但是,如果没有特定的原因需要一个列表,那么只需传递一个集合即可(这将是duck键入的方式)


您可以使用内置的
set
类型从集合中获取唯一的元素:

x = [1,2,3,3]
unique_elements = set(x)

您可以使用内置的
set
类型从集合中获取唯一的元素:

x = [1,2,3,3]
unique_elements = set(x)

所有关系运算符都具有完全相同的优先级,并且是链接的。这意味着该行:

评估结果如下:

这显然不是你想要的

解决方案是删除第二个关系运算符:

if x[i] not in a:

所有关系运算符都具有完全相同的优先级,并且是链接的。这意味着该行:

评估结果如下:

这显然不是你想要的

解决方案是删除第二个关系运算符:

if x[i] not in a:
如果订单重要:

def uniquefy(x):
    s = set()
    return [i for i in x if i not in s and s.add(i) is None]
其他:

如果订单重要:

def uniquefy(x):
    s = set()
    return [i for i in x if i not in s and s.add(i) is None]
其他:

你应该在这里用。它减少了
中的
操作时间:

def Uniquefy(x):
    a = set()
    for item in x:
        if item not in a:
            a.add(item)
    return list(a)
或相当于:

def Uniquefy(x):
    return list(set(x))
你应该在这里用。它减少了
中的
操作时间:

def Uniquefy(x):
    a = set()
    for item in x:
        if item not in a:
            a.add(item)
    return list(a)
或相当于:

def Uniquefy(x):
    return list(set(x))

这将更改元素的顺序。这将更改元素的顺序。我认为您不需要在第一个示例中使用集合,因为您已经在检查该项是否不存在。(
如果项目不在a:
)@vishen在
列表中使用的
中的
操作与在
设置中的用法相比要慢得多。这就是为什么我在第一个示例中将
list
替换为
set
。我认为您不需要在第一个示例中使用set,因为您已经在检查该项是否不存在。(
如果项目不在a:
)@vishen在
列表中使用的
中的
操作与在
设置中的用法相比要慢得多。这就是为什么我在第一个示例中将
list
替换为
set