Python:从内置的list()函数中扩展结果



我有一个原始列表,其内容在另一个函数中确定,我希望将数字0和5添加到列表中以形成一个扩展列表,而不会损坏原始列表。在这个应用程序中,我知道0和5永远不会是原始列表的一部分,所以我不担心重复。我也不关心秩序或要素。

  1. 由于另一个问题中讨论的原因,以下内容不起作用,因为它破坏了原始列表:

    >>> orig = [1,6]
    >>> extended = orig
    >>> extended.extend([0,5])
    >>> extended
    [1, 6, 0, 5]
    >>> orig
    [1, 6, 0, 5]
    
  2. 提出的解决方案之一是使用内置的list()函数。这产生了所需的结果:

    >>> orig = [1,6]
    >>> extended = list(orig)
    >>> extended.extend([0,5])
    >>> extended
    [1, 6, 0, 5]
    >>> orig
    [1, 6]
    
  3. 然后我尝试将2的第2行和第3行合并。这会产生一个"无"的结果,并且只有当你打印它的时候

    >>> orig = [1,6]
    >>> extended = list(orig).extend([0,5])
    >>> extended
    >>> print extended
    None
    
  4. 我最终编码的是这个,它比以前的任何尝试都要整洁,使用串联。

    >>> orig = [1,6]
    >>> extended = orig + [0,5]
    >>> extended
    [1, 6, 0, 5]
    >>> orig
    [1, 6]
    

但我的问题是,为什么示例3不起作用?(对我来说)它看起来很合理,而且没有返回错误。它只会产生"无"。

我使用的是Python 2.7.8。

extend是一个就地操作,与list.sortlist.append一样,它会影响原始列表。所有这些方法都返回None,因为它们不返回任何值,所以当您返回extended = list(orig).extend([0,5])时,您只看到extend的返回值。

In [6]:  l = [1,2,3]  
In [7]: e = l.extend([4,5])    
In [8]: print e
None
In [9]:  l = [1,2,3]  
In [10]: a = l.append(6)    
In [11]: print a
None

最新更新