gpt4 book ai didi

Python列表: How to append objects while being used by a function?

转载 作者:行者123 更新时间:2023-12-01 05:58:36 26 4
gpt4 key购买 nike

Possible Duplicate:
Modifying list while iterating

我正在编写一个Python脚本,我试图从方法内部将对象附加到在类主体中创建的列表中。

到目前为止我的代码是这样的:

class Worker:

myList = ['one item', 'second item']

def itter_List_Func(self, list_param):
for item in list_param:
more_items = item.split()
self.myList[:] = [self.myList + item for item in more_items]

但是对于一种奇怪的时尚,我遇到了一些“无法修改列表而迭代错误”。我是否应该保留就地更改并尝试使用新项目创建一个新的 List 对象?或者这会由于丢失 list_param 或其他东西的引用而产生更多问题?

最佳答案

要明确“直接创建新列表”的想法,您需要类似以下内容:

myList = sum((item.split() for item in myList), [])

这是一种简单的编写方式,不幸的是,如果您有很多项,那么速度会很慢(因为 sum 依赖于加法,而加法并不是在 Python 中连接 list 的有效方法)。使用显式循环:

result = []
for item in myList:
result.extend(item.split())
myList = result

也就是说:我们不会创建列表的副本并尝试修改它;我们创建一个空白列表,并使用原始列表作为该过程的输入,迭代地将其转换为我们想要的内容。

顺便说一下,这里可能有两个设计问题:您似乎期望每次调用该函数时都会传递一个特定值,并且您已经定义了一个类属性,而您可能需要一个实例属性。

关于Python列表: How to append objects while being used by a function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11449540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com