假设我有这个字符串列表
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)
你有很多问题,具体的错误是由于打字错误:
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)