python – 扩展列表中的元素
发布时间:2020-12-20 11:12:45 所属栏目:Python 来源:网络整理
导读:我正在寻找一种“好”的方式来处理一个列表,其中一些元素需要扩展为更多的元素(只有一次,结果没有扩展). 标准的迭代方式是: 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 这很难看.
我正在寻找一种“好”的方式来处理一个列表,其中一些元素需要扩展为更多的元素(只有一次,结果没有扩展).
标准的迭代方式是: i=0 while 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) # or def 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 x new_list = list(iter_new_list(old_list)) 这在功能上等同于您的第二个示例,但在您的实际情况中它可能更具可读性. 此外,Python编码标准禁止使用小写-L作为变量名,因为它几乎与数字1无法区分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |