将新值附加到python列表

Dar*_*rko 0 python list find

可以说我有两个列表:

x = [1,2,3,4]
y = [1,4,7,8]
Run Code Online (Sandbox Code Playgroud)

我想在x中附加x中尚未包含的任何值.我可以通过循环轻松完成此操作:

for value in y:
    if value not in x:
        x.append(value)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更多的Pythonic方式.

Ash*_*ary 5

像这样的东西:

In [22]: x = [1,2,3,4]

In [23]: y = [1,4,7,8]

In [24]: x += [ item for item in y if item not in x]

In [25]: x
Out[25]: [1, 2, 3, 4, 7, 8]
Run Code Online (Sandbox Code Playgroud)

+=充当list.extend,所以上面的代码相当于:

In [26]: x = [1,2,3,4]

In [27]: lis = [ item for item in y if item not in x]

In [28]: x.extend(lis)

In [29]: x
Out[29]: [1, 2, 3, 4, 7, 8]
Run Code Online (Sandbox Code Playgroud)

请注意,如果列表的大小x很大而且列表x/y只包含不可变(可散列)项,则必须sets在此使用,因为它们会增加时间复杂度O(N).