我想转置一个字符串列表,但我得到TypeError

时间:2017-07-06 04:00:47

标签: python arrays

假设我有这个字符串列表

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=''

2 个答案:

答案 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']