允许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方法返回新列表的主要内容,如果未能解决你的问题,请参考以下文章