我有一个列表,其中包含我要分割的字符串列表。有些列表只有一个字符串,但其他列表有更多字符串。
ex:qnum = [[(' 1 2 3')],[(' 1 1 1'),(' 3 4 5')] ,[(' 5 6 7')]]
print 'qnum', qnum[0][0].split()
print 'qnum', qnum[1][1].split()
给予:qnum [' 1',' 2',' 3']和qnum [' 3',' 4',' 5']这是完美的。但是
qnum2 = []
for i in qnum: #which list in qnum
for n in qnum[i]: #which string in the list
qnum2.append( qnum_low[i][n].split() )
在qnum_low [i]中对n的第一次迭代中断:"导致错误" TypeError:list indices必须是整数,而不是list"
我应该可以索引到包含一个项目的列表,对吗?看看我是如何做到的。
答案 0 :(得分:3)
您的TypeError
源自您假设for i in qnum
将指数迭代到 qnum
。它没有迭代项目本身。这通常会产生更短,更清晰的代码:
qnum2 = []
for sublist in qnum:
for item in sublist:
qnum2.append(item.split())
事实上,这四行可以使用列表理解语法压缩成一行分配:
qnum2 = [item.split() for sublist in qnum for item in sublist]
如果您确实需要索引i
和n
用于循环中的其他目的,那么enumerate
可以帮助您:
for i, sublist in enumerate(qnum):
for n, item in enumerate(sublist):
...
如果由于某种原因你坚持只迭代索引,那么你通常会坚持使用这种相当笨重的,非语言的语法:
for i in range(len(qnum)):
for n in range(len(qnum[i])):
....