【发布时间】:2015-10-15 14:12:14
【问题描述】:
假设我有以下列表
['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6', '\U0001f1ee']
现在我想合并两个连续的元素,如果两个元素都在U+1F1E6到U+1F1FF的范围内,那么结果列表应该是
['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6\U0001f1ee']
所以其实有两个问题:
- 如何检查 unicode 是否在某个范围内?将 unicode 转换为代码点并进行比较?
- 如何有效地比较并从中创建新列表?一些带有列表理解的 Pythonic 方式?
顺便说一句,我正在运行 Python 3.5。
【问题讨论】:
-
对于 2。我会使用 itertools.combinations。
-
@Hashirun 你能确定字符串总是单个字符/最多 2 个字符吗?
-
@AnandSKumar 他们列表中的一项看起来可能是 2 '\U0001f44d\U0001f3fe'
-
所以我认为我们需要定义该列表中某个元素在某个 unicode 范围内的含义。对于单个代码点,定义和检查很明显,但是包含多个代码点的 unicode 对象呢?每个代码点都应该在范围内吗?
-
如果一个元素有多个代码点,那么它可以被忽略。所以应该只比较单个代码点。
标签: python list unicode list-comprehension