使用zip()
:
In [32]: data
Out[32]: [['AB', 'BS, BT'], ['AH', 'AH'], ['AS', 'AS, GS']]
In [33]: [zip([x[0]]*len(x[1].split(",")),x[1].split(",")) for x in data]
Out[33]: [[('AB', 'BS'), ('AB', ' BT')], [('AH', 'AH')], [('AS', 'AS'), ('AS', ' GS')]]
chain()
期待される出力を取得するために使用します。
In [34]: lis=[zip([x[0]]*len(x[1].split(",")),x[1].split(",")) for x in data]
In [35]: list(chain(*lis))
Out[35]: [('AB', 'BS'), ('AB', ' BT'), ('AH', 'AH'), ('AS', 'AS'), ('AS', ' GS')]
を使用してizip_longest
、fillvalue
各サブリストの最初の要素に等しい:
In [47]: from itertools import chain,izip_longest
In [48]: lis=[tuple(izip_longest([x[0]],x[1].split(","),fillvalue=x[0])) for x in data]
In [49]: lis
Out[49]: [(('AB', 'BS'), ('AB', ' BT')), (('AH', 'AH'),), (('AS', 'AS'), ('AS', ' GS'))]
In [50]: list(chain(*lis))
Out[50]: [('AB', 'BS'), ('AB', ' BT'), ('AH', 'AH'), ('AS', 'AS'), ('AS', ' GS')]