唯一化返回空lis

2024-10-01 02:20:19 发布

您现在位置: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

看起来if str(x[i]) in a == False:失败了,这导致函数返回一个空列表。 你们能提供什么帮助吗?你知道吗


Tags: 函数字符串infalse元素列表forlen
3条回答

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

if x[i] in a == False:

评估如下:

if (x[i] in a) and (a == False):

这显然不是你想要的。你知道吗

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

if x[i] not in a:

您只需根据列表创建一个set,该列表将只包含唯一值:

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

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

如果你需要从一个列表中创建它并且需要一个列表,试试这个。但是,如果没有特定的原因需要一个列表,那么只需传递一个集合就可以了(不管怎样,这就是duck的输入方式)。你知道吗

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

相关问题 更多 >