标准的迭代方式是:
i=0while i < len(l): if needs_expanding(l[i]): new_is = expand(l[i]) l[i:i] = new_is i += len(new_is) else: i += 1
这很难看.我可以使用以下内容将内容重写为新列表:
nl = []for x in l: if needs_expanding(x): nl += expand(x) else: nl.append(x)
但他们似乎都太长了.或者我可以简单地做2次通过并稍后压平列表:
flatten(expand(x) if needs_expanding(x) else x for x in l)# ordef try_expanding(x)....flatten(try_expanding(x) for x in l)
但这也不是“正确”.
有没有其他明确的方法来做到这一点?
解决方法 如果您不需要在生成的列表中进行随机访问,则还可以使用write a generator.def iter_new_List(old_List): for x in old_List: if needs_expanding(x): for y in expand(x): yIEld y else: yIEld xnew_List = List(iter_new_List(old_List))
这在功能上等同于您的第二个示例,但在您的实际情况中它可能更具可读性.
此外,Python编码标准禁止使用小写-L作为变量名,因为它几乎与数字1无法区分.
总结以上是内存溢出为你收集整理的python – 扩展列表中的元素全部内容,希望文章能够帮你解决python – 扩展列表中的元素所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)