63505


リスト内でアナグラム同士を見つけたいのですが、実行すると以下の様に同じ内容が繰り返し表示されてしまいます。どのように変更すればいいですか？

**実行結果**

[code]

    iceman cinema
    iceman cinema
    .
    .
    .
    
[/code]

**現状のプログラム**

[code]

    def anagram(anagram_list):
        for i in anagram_list:
            for j in anagram_list:
                i=0
                j=1
                a=anagram_list[i]
                b=anagram_list[j]
                a=a.lower()
                b=b.lower()
                if sorted(a)==sorted(b):
                    print(a,b)
                elif sorted(a)!=sorted(b):
                    continue
                i+=1
                j+=1
    list=["iceman","cinema","leaf","tree","live","Evil","Silent","listen","good","god"]
    anagram(list)
    
[/code]


CC BY-SA 4.0
2020-03-02T14:21:12.703
63503
2020-03-03T00:29:56.427
2020-03-03T00:29:56.427
3060
37503
question
python
リストの中からアナグラムの単語同士を見つけるプログラムを作りたい


`itertools.combinations()` を使ってみてはどうでしょうか。

[code]

    from itertools import combinations
    
    def anagram(lst):
      for (a, b) in combinations(lst, 2):
        if sorted(a.lower()) == sorted(b.lower()):
          print(a, b)
    
    if __name__ == '__main__': 
      lst = [
        "iceman", "cinema", "leaf", "tree", "live",
        "Evil", "Silent", "listen", "good", "god"
      ]
    
      anagram(lst)
    
    =>    
    iceman cinema
    live Evil
    Silent listen
    
[/code]

**追記**

itertools を使わない場合には以下の様になります。

[code]

    def anagram(lst):
      l = len(lst)
      for i in range(l):
        for j in range(i+1, l):
          if sorted(lst[i].lower()) == sorted(lst[j].lower()):
            print(lst[i], lst[j])
    
[/code]


CC BY-SA 4.0
2020-03-02T14:47:28.503
63505
2020-03-02T23:23:00.063
2020-03-02T23:23:00.063
63503
answer