允许Python list append方法返回新列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了允许Python list append方法返回新列表相关的知识,希望对你有一定的参考价值。

我想做这样的事情:

myList = [10,20,30]
yourList = myList.append (40)

不幸的是,list append不会返回修改后的列表。

那么,我怎样才能让append返回新列表呢?

答案

不要使用追加而是连接:

yourList = myList + [40]

这会返回一个新列表; myList不会受到影响。如果你需要让myList受影响,或者使用.append()无论如何,然后分配yourList(qartxswpoi的副本)。

另一答案

在python 3中,您可以通过解压旧的并添加新元素来创建新列表:

myList

当你这样做时:

a = [1,2,3]
b = [*a,4] // b = [1,2,3,4] 

你实际上有3个列表。

另一答案

myList + [40] 是内置的,因此无法更改。但如果你愿意使用list.append以外的东西,你可以试试append

+

当然,这样做的缺点是创建了一个比In [106]: myList = [10,20,30] In [107]: yourList = myList + [40] In [108]: print myList [10, 20, 30] In [109]: print yourList [10, 20, 30, 40] 花费更多时间的新列表

希望这可以帮助

另一答案

您可以子类化内置列表类型并重新定义'append'方法。或者甚至更好,创建一个新的,它将做你想要它做的事情。下面是重新定义的'append'方法的代码。

append

希望有所帮助。

另一答案

尝试使用#!/usr/bin/env python class MyList(list): def append(self, element): return MyList(self + [element]) def main(): l = MyList() l1 = l.append(1) l2 = l1.append(2) l3 = l2.append(3) print "Original list: %s, type %s" % (l, l.__class__.__name__) print "List 1: %s, type %s" % (l1, l1.__class__.__name__) print "List 2: %s, type %s" % (l2, l2.__class__.__name__) print "List 3: %s, type %s" % (l3, l3.__class__.__name__) if __name__ == '__main__': main() 。这会将生成器作为序列返回,而不是分配新列表。本质上,它返回第一个iterable中的所有元素,直到它耗尽,然后进入下一个iterable,直到所有的iterables都用完为止。

另一答案

只是为了扩展Storstamp的答案

你只需要做myList.append(40)

它会将其附加到原始列表,现在您可以返回包含原始列表的变量。

如果您正在处理非常大的列表,那么这是可行的方法。

另一答案

你只需要做myList.append(40)

它会将其附加到原始列表,而不是返回新列表。

以上是关于允许Python list append方法返回新列表的主要内容,如果未能解决你的问题,请参考以下文章

Python list-append()方法

python append()函数

如何允许列表append()方法返回新列表

python list append方法不返回预期的结果?

python:列表的方法

Python3-list中的append()和extend()方法区别