假设我有这个字符串列表
li=['efh','opd','qst']
我想"转置"他们看起来像这样
li=['eoq','fps','hdt']
这是我提出的代码,但我得到了一个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=''
答案 0 :(得分:4)
您有很多问题,具体错误是由于拼写错误:
list2[j][i]=previous+list[i][j]
^^^^
list
是内置类型,不支持索引
此外,list2
未定义且python的str
是不可变的,因此您无法分配到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']
注意:python' zip()
会为您执行此操作:
In []:
li=['efh','opd','qst']
[''.join(s) for s in zip(*li)]
Out[]:
['eoq', 'fps', 'hdt']
答案 1 :(得分:0)
您可以在这里查看。
li=['efh','opd','qst']
new_list = []
for i in range(len(li[0])):
# maiking a list with its index element and convert it into string.
new_string = ''.join([ls[i] for ls in li])
# appending the new_string int new_list
new_list.append(new_string)
print(new_list)
# output : ['eoq', 'fps', 'hdt']