我想转置字符串列表,但出现 TypeError

Cat*_*ina 2 python arrays

假设我有这个字符串列表

li=['efh','opd','qst']
Run Code Online (Sandbox Code Playgroud)

我想“转置”它们,使它们看起来像这样

li=['eoq','fps','hdt']
Run Code Online (Sandbox Code Playgroud)

这是我提出的代码,但我收到了 typeError

previous=''

for i in range (len(li)):
    for j in range (len(li[0])):
        list2[j][i]=previous+list[i][j]
        previous=list2[j][i]
    previous=''
Run Code Online (Sandbox Code Playgroud)

ACh*_*ion 5

你有很多问题,具体的错误是由于打字错误:

list2[j][i]=previous+list[i][j]
                     ^^^^
Run Code Online (Sandbox Code Playgroud)

list是内置类型,不支持索引。
此外,list2未定义且pythonstr是不可变的,因此您无法分配str索引。
同样li在迭代期间更改会使以后的迭代产生错误的结果,因此建议创建一个新列表来保存结果。

您的代码的工作副本如下所示:

In []:
li=['efh','opd','qst']
new_li = []
for i in range(len(li[0])):
    r = ''
    for j in range(len(li)):
        r += li[j][i]
    new_li.append(r)
new_li

Out[]:
['eoq', 'fps', 'hdt']
Run Code Online (Sandbox Code Playgroud)

注意:pythonzip()会为你做这个:

In []:
li=['efh','opd','qst']
[''.join(s) for s in zip(*li)]

Out[]:
['eoq', 'fps', 'hdt']
Run Code Online (Sandbox Code Playgroud)