繁体   English   中英

将新值附加到python列表

[英]Appending new values to a python list

可以说我有两个列表:

x = [1,2,3,4]
y = [1,4,7,8]

我想将x中尚未存在的y中的任何值附加到x中。 我可以通过循环轻松地做到这一点:

for value in y:
    if value not in x:
        x.append(value)

但是我想知道是否还有更多的Python方式可以做到这一点。

像这样:

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]

+=用作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]

请注意,如果列表x的大小很大,并且列表x / y仅包含不可变(可哈希)项,则您必须在此处使用sets ,因为它们会将时间复杂度提高到O(N)

>>> x = [1,2,3,4]
>>> y = [1,4,7,8]
>>> set_x = set(x) # for fast O(1) amortized lookup
>>> x.extend(el for el in y if el not in set_x)
>>> x
[1, 2, 3, 4, 7, 8]

如果您不关心结果的顺序,则可以执行以下操作:

>>> x=[1,2,3,4]
>>> y=[1,4,7,8]
>>> x = list(set(x + y))
>>> x
[1, 2, 3, 4, 7, 8]
x = [1,2,3,4]
y = [1,4,7,8]

现在我们想将x中尚未存在的y中的任何值附加到x上。 这很容易做到:

temp = [item for item in y if item not in x]
x.extend(temp)

这将首先将所有不在x中但在y中存在的元素放入称为temp的列表中。 现在,我们将扩展列表x以包括temp中的元素。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM