【问题标题】:Return of a procedure using list in python在python中使用列表返回一个过程
【发布时间】:2016-06-23 22:52:45
【问题描述】:

我正在尝试将仅在列表 y 中列出的值添加到列表 x
我知道我可以使用x.append(e) 而不是x = x + [e],但我想使用+。 但是,我不知道为什么我无法产生想要的结果,这意味着我无法更改列表a

这是我的代码:

def union(x,y):

    for e in y:
           if e not in x:
                  x = x + [e]
a = [1,2,3]
b = [2,4,6]
union(a,b)
print a
print b

结果是:

a = [1,2,3], b = [2,4,6]

我对@9​​87654330@ 的预期结果是[1,2,3,4,6]

【问题讨论】:

  • 大卫,如果它帮助您解决问题,请accept回答

标签: python list for-loop append union


【解决方案1】:

值得指出的是,Python 的 set 数据类型正是为此目的。并且支持.union(otherset)方法!

【讨论】:

    【解决方案2】:

    只需将您的union 函数修改为return 列表x

    def union(x,y):
        for e in y:
            if e not in x:
                x = x + [e]
        return x
    

    然后你可以调用:

    >>> a = union(a,b)
    >>> a
    [1, 2, 3, 4, 6]
    

    更短的方法(使用相同的逻辑)是使用列表理解:

    >>> a += [i for i in b if i not in a]
    >>> a
    [1, 2, 3, 4, 6]
    

    还有超级pythonic

    >>> list(set(a) | set(b))
    [1, 2, 3, 4, 6]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多