長く生産し、指標の長い組み合わせ、そしてイニシャルと名前を置き換えるために、それらを使用します。
from itertools import combinations
def replacements(names, initials):
for count in range(len(names)):
for positions in combinations(range(len(names)), count):
yield [initials[i] if i in positions else name for i, name in enumerate(names)]
yield initials
したがって、上記の最初のanytに代わるものではありません。興(length = 0
)は、次いで、(等[0]
、次いで[1]
をoutputing length = 1
)要素、最大3個の置換([0, 1, 2]
、[0, 1, 3]
、等)へのすべての方法に取って代わります。最後に、「4置換」の場合としてinitials
を出力します。
デモ:もちろん
>>> names = ['Elizabeth', 'Anne', 'Wells', 'Cannon']
>>> initials = ['E.', 'A.', 'W.', 'C.']
>>> for result in replacements(names, initials):
... print(result)
...
['Elizabeth', 'Anne', 'Wells', 'Cannon']
['E.', 'Anne', 'Wells', 'Cannon']
['Elizabeth', 'A.', 'Wells', 'Cannon']
['Elizabeth', 'Anne', 'W.', 'Cannon']
['Elizabeth', 'Anne', 'Wells', 'C.']
['E.', 'A.', 'Wells', 'Cannon']
['E.', 'Anne', 'W.', 'Cannon']
['E.', 'Anne', 'Wells', 'C.']
['Elizabeth', 'A.', 'W.', 'Cannon']
['Elizabeth', 'A.', 'Wells', 'C.']
['Elizabeth', 'Anne', 'W.', 'C.']
['E.', 'A.', 'W.', 'Cannon']
['E.', 'A.', 'Wells', 'C.']
['E.', 'Anne', 'W.', 'C.']
['Elizabeth', 'A.', 'W.', 'C.']
['E.', 'A.', 'W.', 'C.']
、代わりに専用のinitials
リストを使用しての、あなただけのだけの初期を生成するname[0] + '.'
を毎回使用することができます。
問題を解決しようとしたコードのいくつかを表示してみましたか? – aBiologist