Python 从列表列表迭代创建唯一项列表

Python 从列表列表迭代创建唯一项列表,python,Python,我试图通过从每个列表中选择一个项目,从列表列表中创建一个唯一项目列表,如果列表中的一个项目已经在唯一项目列表中,则选择第二个唯一项目,依此类推。请参阅下面的列表和我的尝试 mylist=`[[1,2,3],[1,2,3],[1,2,3]]` def unique(lists): uniquelst=[] for _lst in lists: if _lst[0] not in uniquelst: uniquelst.append(_ls

我试图通过从每个列表中选择一个项目,从列表列表中创建一个唯一项目列表,如果列表中的一个项目已经在唯一项目列表中,则选择第二个唯一项目,依此类推。请参阅下面的列表和我的尝试

mylist=`[[1,2,3],[1,2,3],[1,2,3]]`

def unique(lists):
    uniquelst=[]
    for _lst in lists:
        if _lst[0] not in uniquelst:
            uniquelst.append(_lst[0])
        else:
            uniquelst.append(_lst[1])

    return uniquelst
我的输出:
[1,2,2]

预期输出:
[1,2,3]

每个列表只选择一个项目,因此适当的解决方案应该能够为本例产生相同的结果
[[1,4,3],[1,2,5],[1,2,3]
有什么想法吗?谢谢

newlist = []
for l in mylist:
    newlist = newlist + l
return list(set(newlist))

这对您有帮助吗?

根据您提到的限制,此代码应该可以工作-

def unique(lists):
    uniquelst = []
    for lst in lists:
        for elem in lst:
            if elem not in uniquelst:
                uniquelst.append(elem)
                break

    return uniquelst
第二个循环迭代内部列表的元素,并检查它们是否已经存在于
uniquelst
中。如果它们不存在,则添加元素并从内部循环中断

我忘记提到的一件事是,这段代码假设内部列表的元素是按排序顺序排列的。如果情况并非如此,请在第二个循环之前使用
sorted()
sort()
对内部列表进行排序,对象和函数为:

flat_list = [item for sublist in mylist for item in sublist]
print(list(set(flat_list)))
import itertools

mylist = [[1,2,3],[1,2,3],[1,2,3]]
result = set(itertools.chain(*mylist))
print(list(result))
输出:

[1, 2, 3]

@RomanPerekhrest他得到的是1,2,2,而不是1,2,3。@selten98,是的,这是一个光学错误。预期输出必须包含每个列表中的一项吗?@rodrigo,它必须包含每个列表中的一项,这就是为什么这些解决方案中的一些在不同条件下不起作用。您的解决方案在其他条件下不起作用;例如
[[1,4,3],[1,2,5],[1,2,3]]
@kuro,Roman的方法失败了。当给出新的例子时,它产生了这个结果
[1,2,3,4,5]
而不是
[1,2,3]
@Boby,你是对的。完全忽视了restriction@kuro,在发布问题之前,我几乎尝试了这里推荐的所有解决方案。因此,我仍然在等待正确的答案answer@Boby,我想,你的描述让我感到困惑。我依靠短语从一个列表中创建一个独特的项目列表lists@Boby,你能试试我提到的双循环解决方案吗?