用python制作压缩列表

用python制作压缩列表,python,python-3.x,list,Python,Python 3.x,List,上面是我已经定义了unique的完整代码,但我希望使循环更简单 from random import seed from random import randint print("How long list 1 do you want:") long1 = int(input()) print("How long list 2 do you want:") long2 = int(input()) print("in range 1-100&

上面是我已经定义了unique的完整代码,但我希望使循环更简单

from random import seed
from random import randint

print("How long list 1 do you want:")
long1 = int(input())
print("How long list 2 do you want:")
long2 = int(input())

print("in range 1-100","Generating 2 random list...", sep="\n")
list1 = [randint(1,100) for i in range(long1)]
list2 = [randint(1,100) for i in range(long2)]
print("List 1:",list1,"List 2:",list2, sep = "\n")
list = list1 + list2
unique=[]
for num in list:
    if num not in unique:
        unique.append(num)
print(f"Get unique number({len(unique)}) :", unique, sep="\n") 
我试着编写如下代码:

for num in list:
    if num not in unique:
        unique.append(num)
unique=[num for num in list if num not in unique]
但它给了我一个错误信息

回溯(最近一次调用):文件“”,第21行,在 文件“”,第21行,在名称中错误:名称 未定义“唯一”


不能使用列表理解来创建要用作引用的列表。在展开的代码中,在进入循环之前设置
unique=[]
,这样unique就存在了,并且可以在循环中添加值。你不能在列表中这样做。您在理解临时列表时无法访问它。 (哈……我想这是我自己编出来的。)

如果需要一组唯一的列表项,可以使用另一个本机构造,称为
。它为您提供了一组独特的列表项,但它们几乎肯定会被重新排序。大概是这样的:

for num in list:
    if num not in unique:
        unique.append(num)
unique=[num for num in list if num not in unique]
list1+list2
将这两个列表组合在一起,保留准确的顺序。
set()。你必须做一些更聪明的事情来保持原来的秩序


另外,您不应该使用名为
list
的变量,因为它是Python本机类型,如
int
tuple
等。

如果您想要一行解决方案
unique.extend(list(set(unique)-set(list))
,但是,如果以某种方式使用列表理解,
unique
每次都在不断修改,那么每次都会显示错误。您认为您在哪里定义了
unique
?第一个代码并不完美;它显示相同的错误(如果不在同一行上)。也许你忘了在你的帖子里写点什么?你不能简单地做一下
unique=list(set(x))
。你不需要理解列表。我不知道“set”函数是什么,但我会去学习它,我对这一点很陌生,也感谢你的回答哦,我明白了,谢谢你,兄弟,但是有什么办法可以让循环1行代码呢?如果你不在乎顺序,你可以说list3=list(set(list1+list2))。我在上面的回答中加了这个。我以前不知道“set”函数,很容易得到一个不重复的数字lol,现在我觉得问这样的问题很傻,谢谢:)