i is a string value not index. You can use enumerate function:
for index, i in enumerate(words):
result += words[index]
or you can just use the word itself:
for i in words:
result += i
Performance:
In [14]: timeit.timeit('string_cat', '''def string_cat():
...: rg = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
...: 't', 'u', 'v', 'w', 'x', 'y', 'z']
...: st = ''
...: for x in rg: st += x
...: ''', number=1000000)
Out[14]: 0.02700495719909668
In [15]: timeit.timeit('string_cat', '''def string_cat():
...: rg = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
...: 't', 'u', 'v', 'w', 'x', 'y', 'z']
...: st = ''.join(rg)
...: ''', number=1000000)
Out[15]: 0.026237964630126953
print(i)in the loop, you will see thatiis not what you think it is.