合并列表中的元素,如果它们在特定的 unicode 范围内

Merge elements in a list, if they are in a certain unicode range

假设我有以下列表

['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6', '\U0001f1ee']

现在我想合并两个连续的元素,如果两个元素都在U+1F1E6U+1F1FF的范围内,那么结果列表应该是

['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6\U0001f1ee']

所以其实有两个问题:

  1. 如何检查一个unicode是否在某个范围内?将 unicode 转换为代码点并进行比较?
  2. 如何有效地比较并从中创建新列表?列表理解的一些 pythonic 方式?

我 运行 Python 3.5 顺便说一句。

我不太熟悉 unicode,无法理解您当前对范围的要求。它没有尽可能简洁,但我已经尝试考虑一个元素包含多个字符的情况。我还给出了任意 unicode 范围。希望这对您有所帮助。

a = ['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6', '\U0001f1ee']
aa = {x: ord(x.decode('unicode-escape')) if x.count('\') < 2 else 1 for x in a}

low = 127460
high = 127475

[(y,x) if (high >= aa[x] >= low and high >= aa[y] >= low) else y for x,y in zip(aa.keys()[1:],aa.keys()[:-1])]