【发布时间】:2017-06-01 09:11:17
【问题描述】:
我想根据正则表达式的识别重新格式化文本。
所以我基本上做了
regex= re.compile("(group1)(group2)(group3)(group4)")
text_groups=regex.search(text).groups()
text_groups 是一个带有封闭组的列表。 我想以不断的方式改变顺序。 我知道我可以做到这一点
reordered_groups=np.array(text_groups)[[1,3,0]
但这不是我的问题。
为了避免转换为 np.array 会因为涉及字符串而导致计算效率低下,我更喜欢使用列表推导式,其额外的优势是能够根据条件进行过滤:
reordered_groups=[ text_groups[i] if text_groups[i] is not None else "" for i in [2, 4, 1, 5] ]
我认为 text_groups[i] repeat 很难看,如果您考虑在大型列表上使用类似的技术,可能效率低下,因为您将调用索引两次。我们如何在不使用本身效率低下的 for 循环的情况下避免这种情况?
【问题讨论】:
标签: python scope list-comprehension variable-assignment