可以说我有两个列表:
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方式.
像这样的东西:
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).