python - 无法获得所有正则表达式可能性的组合列表
问题描述
我正在使用该exrex
包生成正则表达式的所有排列列表。但是,我有几个正则表达式并想创建一组所有排列(没有重复)。所以,给定:
from exrex import generate
my_regexs=('a|b','a|c')
expansions=map(generate,my_regexs)
也许我什至不需要map
或中间变量expansions
- 不确定。现在,我如何从这些中获取排序列表:
# Create a set from all of the expansions (e.g., let's store in myset, for clarity)
# in order to merge duplicates
myset=... # Results in myset containing {'a','c','b'} - hash order
sorted_list=sorted(myset) # Finally, we get ['a','b','c']
感谢您对此的任何帮助,我敢打赌,有一个简单的带有列表理解的单线可以做到这一点。
注意:我们正在处理一个map
包含多个生成器的对象(即,多个生成器的有序容器,而不是list
列表!)
更新:我以为我清楚输入和输出:
Input: ('a|b','a|c') # Two reg-exs, results in all-permutations: ['a','b','a','c']
Output: ['a','b','c'] # Eliminating duplicates, we get the output presented
解决方案
另一个答案涵盖了嵌套理解案例,因此我正在更新此答案以使用itertools.chain.from_iterable
.
from exrex import generate
from itertools import chain
flatten = chain.from_iterable
regexes = ('a|b', 'a|c')
ordered_unique = sorted(set(flatten(map(generate, regexes))))
推荐阅读
- php - 如何使用外观获取当前会话实例
- c - Libav(ffmpeg)容器编解码器时基和流时基的目的是什么?
- php - 类别和子类别的父 ID
- java - 在 Java 中的 JSON 文件中查找用户输入
- javascript - 如何清除处理文件下载且不导航的 HTML 表单
- java - Unknown mappedBy in:... 引用的属性未知
- laravel - Laravel 8 - 有条件地记住缓存中的值
- javascript - 为什么我的搜索功能不适用于 SpaceX api?
- python - 从以换行符分隔的不同列中的元组列表写入文本文件
- r - 如何计算多个系列的 ACF 并一次绘制它们?