Python itertoolsモジュールリスト要素文字列逆ループマージ


list:number=[‘a’,’b’,’c’,’d’]要求出力dabc cabd bacd abcdが存在する
リスト(数値にはできません)と文字列(アルファベットにはできません)に適用
#coding:utf-8

''' FuncName: listtmp.py Desc: itertools chain Date: 2016-04-29 12:00 Author: johnny '''

import itertools                            #      

number = ['a','b','c','d']                     
#number = '1234'                ,       
listlen = len(number)                       #     
for num in xrange(listlen):                 
    nums = num-1
    tmp1 = "".join(itertools.chain(*number[0:nums]))  
    # "".join(itertools.chain(*number[0:3])) == abc
    if num == 0 :                           #       2 
        out1 = number[nums]+tmp1            #      +    
        print out1
    else:
        tmp2 = "".join(itertools.chain(*number[num:listlen]))
        out2 = number[nums]+tmp1+tmp2       #     + 0     +       
        print out2

出力:
dabc
abcd
bacd
cabd

反復器についてはかわいいPython:itertoolsモジュールの組合せ関数を使用