将pythonic循环转换为传统的循环风格

时间:2017-07-20 17:21:09

标签: python

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

@model AvivaVozSP.Models.UserViewModel
@using System.Web.Mvc.Ajax

 <form action="@Url.Action("Create", "Users")" id="form" enctype="multipart/form-data" method="post">
 
 <div class="DvCampoUp">
     @Html.DropDownListFor(m => m.user.Country_id, Model.AvailableCountries, new { @class = "StyleOb Required txtFill", @onclick = "ocultar();", @onchange = "javascript:GetState(this.value);", @id = "Country_id" })
 </div>
 <div class="DvCampoUp">
   @Html.ValidationMessageFor(model => model.user.Country_id, "", new { @class = "text-danger" })
  </div>

</form>

 <script language="javascript" type="text/javascript">
   $('form').submit(function (event) {
                alert(1);
 });                

我想把它分解为传统的编码方式。我可以说它等同于:

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

谢谢。

2 个答案:

答案 0 :(得分:4)

它不叫“pythonic looping”,而是list comprehension

等价物是:

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

nparr = np.asarray(items)

答案 1 :(得分:1)

您的方法存在的问题是您没有构建列表,例如此列表理解确实如此。相反,您只是从np.asarray索引一个项目,而从不保存该值。此外,您甚至不想索引np.asarray,您希望将列表传递给其构造函数。

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

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

另外,只是为了让你知道,&#34; pythonic loop&#34;您所指的通常称为list comprehension。 &#34; Python化&#34;这只是我们Python社区成员用来描述Python语言及其理想惯用语的名称。