Python-创建一个函数以从未知数量的参数中获取唯一列表
python新手,有人能告诉我我做错了什么吗 我需要编写一个函数,它接受未知数量的参数并返回唯一的列表。 例如:Python-创建一个函数以从未知数量的参数中获取唯一列表,python,function,unique,Python,Function,Unique,python新手,有人能告诉我我做错了什么吗 我需要编写一个函数,它接受未知数量的参数并返回唯一的列表。 例如: a= ['mary', 'james', 'john', 'john'] b= ['elsie', 'james', 'elsie', 'james'] unique_list(a,b) ['mary', 'james','john', 'elsie'] 这是我做了一些研究后得到的一些代码,但输出不是我需要的: def unique_list:(*something)
a= ['mary', 'james', 'john', 'john']
b= ['elsie', 'james', 'elsie', 'james']
unique_list(a,b)
['mary', 'james','john', 'elsie']
这是我做了一些研究后得到的一些代码,但输出不是我需要的:
def unique_list:(*something)
result1= list(something)
result = ' '.join(sum(result1, []))
new= []
for name in result:
if name not in new:
new.append(name)
return new
有什么想法吗?提前感谢您的帮助。您可以使用:
对于数量未知的参数,您可以将所有列表与以下参数一起添加:
这将产生:
>>> a= ['mary', 'james', 'john', 'john']
>>> b= ['elsie', 'james', 'elsie', 'james']
>>> unique_list(a, b)
['james', 'john', 'mary', 'elsie']
您可以使用:
对于数量未知的参数,您可以将所有列表与以下参数一起添加:
这将产生:
>>> a= ['mary', 'james', 'john', 'john']
>>> b= ['elsie', 'james', 'elsie', 'james']
>>> unique_list(a, b)
['james', 'john', 'mary', 'elsie']
您可以连接所有列表,然后从此结果列表创建一个集合。这将适用于任何数量的传入列表,其中函数看起来像def unique_lists*列表
您可以连接所有列表,然后从此结果列表创建一个集合。这将适用于任何数量的传入列表,其中函数看起来像def unique_lists*列表
我想你要找的功能是把两个列表组合成一组,然后再把它变成一个列表。像这样:
list(set(list(a+b)))
给出:['james','john','mary','elsie']我认为您正在寻找的函数是将两个列表组合成一组,然后再将其组合成一个列表。像这样:
list(set(list(a+b)))
给出:['james','john','mary','elsie']您需要未知数量的参数:
In [73]: import itertools
In [74]: def func(*args):
...: return set(itertools.chain(*args))
In [75]: func([1,2,3,4],[3,4,5],[1,2])
Out[75]: set([1, 2, 3, 4, 5])
或不使用itertools:
In [77]: def func2(*args):
...: setlist=[set(i) for i in args]
...: return set.union(*setlist)
In [78]: func2([1,2,3,4],[3,4,5],[1,2])
Out[78]: set([1, 2, 3, 4, 5])
您需要未知数量的参数:
In [73]: import itertools
In [74]: def func(*args):
...: return set(itertools.chain(*args))
In [75]: func([1,2,3,4],[3,4,5],[1,2])
Out[75]: set([1, 2, 3, 4, 5])
或不使用itertools:
In [77]: def func2(*args):
...: setlist=[set(i) for i in args]
...: return set.union(*setlist)
In [78]: func2([1,2,3,4],[3,4,5],[1,2])
Out[78]: set([1, 2, 3, 4, 5])
在你第二次尝试时,你几乎成功了 实际上,在代码的这一部分,您将每个列表视为一个元素。你可能想考虑列表中的每一个元素。因此,您的代码可以是:
def unique_list(*something):
result= list(something)
new=[]
for names in result:
for name in names:
if name not in new:
new.append(name)
return new
这将导致:
['mary', 'james', 'john', 'elsie']
这同样适用于第三次尝试。请注意,在这种情况下,从列表中创建一个集合,然后再从该集合中创建一个列表,可能不会以与原始列表相同的顺序返回元素
根据需要,还可以使用itertools.chain。其职能是:
import itertools
def unique_list(*something):
return list(set(itertools.chain(*something)))
结果是,记住集合不保持原始顺序:
['james', 'john', 'mary', 'elsie']
在你第二次尝试时,你几乎成功了 实际上,在代码的这一部分,您将每个列表视为一个元素。你可能想考虑列表中的每一个元素。因此,您的代码可以是:
def unique_list(*something):
result= list(something)
new=[]
for names in result:
for name in names:
if name not in new:
new.append(name)
return new
这将导致:
['mary', 'james', 'john', 'elsie']
这同样适用于第三次尝试。请注意,在这种情况下,从列表中创建一个集合,然后再从该集合中创建一个列表,可能不会以与原始列表相同的顺序返回元素
根据需要,还可以使用itertools.chain。其职能是:
import itertools
def unique_list(*something):
return list(set(itertools.chain(*something)))
结果是,记住集合不保持原始顺序:
['james', 'john', 'mary', 'elsie']
如果有未知数量的参数怎么办?如果有未知数量的参数怎么办?@user1667805-不客气。添加了另一个不带itertools的选项。@user1667805-欢迎您。添加了另一个没有itertools的选项。@ThiagoRRamos-感谢您指出关于集合的问题,并展示了另一个可能的选项solution@ThiagoRRamos-感谢您指出关于集合的内容并展示另一种可能的解决方案,这并不能解决问题-列表元素在结果列表中重复。这并不能解决问题-列表元素在结果列表中重复。
a= ['mary', 'james', 'john', 'john']
b= ['elsie', 'james', 'elsie', 'james']
def unique_list(a, b):
a.extend(b)
return list(set(a))