Python 合并列表中的元素(如果它们在某个unicode范围内)

Python 合并列表中的元素(如果它们在某个unicode范围内),python,list,unicode,list-comprehension,Python,List,Unicode,List Comprehension,假设我有以下清单 ['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6', '\U0001f1ee'] 现在我想合并两个连续的元素,如果两个元素都在U+1F1E6到U+1F1FF的范围内,那么结果列表应该是 ['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6\U0001f1ee'] 所以实际上有两个问题: 如何检查unicode是否在特定范

假设我有以下清单

['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6', '\U0001f1ee']
现在我想合并两个连续的元素,如果两个元素都在
U+1F1E6
U+1F1FF
的范围内,那么结果列表应该是

['\U0001f680', '\U0001f618', '\U0001f44d\U0001f3fe', '\U0001f1e6\U0001f1ee']
所以实际上有两个问题:

  • 如何检查unicode是否在特定范围内?将unicode转换为代码点并进行比较
  • 如何有效地比较并从中创建新列表?一些关于列表理解的python方法

  • 顺便说一句,我正在运行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])]
    
    a=['\U0001f680'、'\U0001f618'、'\U0001f44d\U0001f3fe'、'\U0001f1e6'、'\U0001f1ee']
    aa={x:ord(x.decode('unicode-escape'))如果x.count('\\')小于2,则a}中的x为1
    低=127460
    高=127475
    [(y,x)如果(高>=aa[x]>=low和高>=aa[y]>=low)否则y代表x,y在zip中(aa.keys()[1:],aa.keys()[:-1])]
    
    第2页。我会使用itertools.combinations.@Hashirun您能确保字符串始终是单个字符/atmost 2个字符吗?@AnandSKumar他们列表中的一个项目看起来可能是2'\U0001f44d\U0001f3fe',因此我认为我们需要定义该列表中某个元素在特定unicode范围内的含义。对于单个代码点,定义和检查都是显而易见的,但是对于包含多个代码点的unicode对象呢?每个代码点都应该在范围内吗?如果一个元素有多个代码点,那么可以忽略它。因此,只应比较单个代码点。