将 pythonic 循环转换为传统的循环样式



我是Python的初学者,我有一个问题:鉴于以下内容:

np.asarray([self.simulate(c) for c in challenges])

我想将其分解为以传统的编码方式看起来很熟悉。我可以说它相当于:

for c in challenges:
y = self.simulate(c)
y = np.asarray[y]

谢谢。

它不叫"pythonic looping",而是列表理解

等效的将是:

items = []
for c in challenges:
items.append(self.simulate(c))
nparr = np.asarray(items)

你的方法的问题在于你没有构建一个列表,就像这个列表理解所做的那样。相反,您只是从np.asarray索引一个项目,并且永远不会保存该值。此外,您甚至不想索引np.asarray,您希望将列表传递给其构造函数。

您需要创建一个临时列表来保存每次迭代challenges的返回值self.simulate(c),并将列表传递给np.asarray

temp = []
for c in challenges:
temp.append(self.simulate(c))
array = np.asarray(temp)

另外,只是为了让您知道,您所指的"pythonic 循环"通常称为列表理解。"Pythonic"只是我们Python社区成员用来描述Python语言及其理想的惯用名称。

最新更新