【问题标题】:eliminate duplicate anagram in a list消除列表中的重复字谜
【发布时间】:2020-02-21 05:26:48
【问题描述】:
s = ['4', 'poke', 'aaagmnrs', 'pkoe', 'okpe', 'ekop', 'anagrams']

final_list = []

for i in range(0, len(s)):
    for j in range(i+1, len(s)):
        if sorted(s[i]) == sorted(s[j]):
            if s[i] not in final_list:
                final_list.append(s[i])

print(final_list)

我得到这个输出

['poke', 'aaagmnrs', 'pkoe', 'okpe']

我需要这个输出

['poke', 'aaagmnrs']

如果列表中有多个项目是列表中较早项目的字谜,我基本上只需要第一次出现。例如,“poke”出现在“pkoe”、“okpe”和“ekop”之前,我只需要输出列表中的“poke”。与“aaagmnrs”相同。由于 'aaagmnrs' 出现在 'anagrams' 之前,我只需要输出中的 'aaagmnrs'。

【问题讨论】:

    标签: python python-3.x anagram


    【解决方案1】:

    考虑保留一个已排序版本的已找到 anagram 的列表,然后检查该已排序字符串列表是否包含已排序字符串。如果需要,在将列表中的匹配项添加到列表后,您还可以从内部循环中中断:

    s = ['4', 'poke', 'aaagmnrs', 'pkoe', 'okpe', 'ekop', 'anagrams']
    
    final_list = []
    final_list_sorted = []
    
    for i in range(0, len(s)):
        sortedi = sorted(s[i])
        for j in range(i+1, len(s)):
            if sortedi == sorted(s[j]):
                if sortedi not in final_list_sorted:
                    final_list.append(s[i])
                    final_list_sorted.append(sortedi)
    
                break
    
    print(final_list)
    
    ['poke', 'aaagmnrs']
    

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2020-05-11
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多