Python 返回空列表的唯一化
我是python新手,尝试创建一个函数Uniqueify(L),该函数将给出一个数字列表或一个字符串列表(非空),并返回该列表中唯一元素的列表。 到目前为止,我已经: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])失败了,这导致函数返回一
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
。