How to make all possible combinations of a word in Python
<p>I have a txt file with all of the letters in the alphabet that looks like this:</p>

<p>a</p>

<p>b</p>

<p>c</p>

<p>etc..</p>

<p>I also have a word list of words that is only 3 letters long:</p>

<p>ago</p>

<p>age</p>

<p>bat</p>

<p>bag</p>

<p>etc...</p>

<p>I want to create a list that prints out all of the combinations possible starting with the first word ago:</p>

<p>My test program looks like this:</p>

<pre><code>allcombi=[]
s= list("ago")
the.list=[]
with open("alfabeth.txt", "r", encoding = "utf-8") as letters:
    for line in letters:
        letter = line.strip()
        s[0]=letter
        print(s)
</code></pre>

<p>Now I only change the first letter, but I have a really hard time trying to join the letters because it only looks like this:</p>

<p>['a', 'g', 'o']
['b', 'g', 'o']
....</p>

<p>HELP WITH:</p>

<ol>
<li><p>Print it out as  ['ago','bgo'] instead</p></li>
<li><p>Instead of just changing the first letter, change it one letter at a time in index 0,1 and 2 one letter at a time in the word. The output should be 27*3 rows long with ['ago','bgo',........,'agx',agy,'agz']   </p></li>
</ol>

<p>I will later search for all of the items in my new list in a dictionary but that I can figure out myself it's just this part that really gotten me stuck.</p>

<p>You need nested loops for starters. When you get the grip of what you actually trying to do, then you can see the itertools package. </p>

<p>With the code that you have provided, you should need something like:</p>

<pre><code>s = list('ago')
the_list=[]
with open("alfabeth.txt", "r", encoding = "utf-8") as letters:
    lines = [line for line in letters]

for i in range(len(s)):
    for ii in lines:
        tmp_s = list(s)
        tmp_s[i] = ii
        print(''.join(tmp_s))
</code></pre>

<p>And with itertools this becomes:</p>

<pre><code>from itertools import product

s = list('ago')
with open("alfabeth.txt", "r", encoding = "utf-8") as letters:
    lines = [line.strip() for line in letters]

for i in product(range(len(s)), lines):
    print(''.join(s[:i[0]] + [i[-1]] + s[i[0] + 1:]))
</code></pre>

python string list replace letter