擅长:python、mysql、java
<p><code>valueListStr = []*len(tmpList)</code>不做您认为它做的事情,如果您想要一个列表列表,请使用带有范围的列表comp:</p>
<pre><code>valueListStr = [[] for _ in range(len(tmpList))]
</code></pre>
<p>将创建一个列表列表:</p>
<pre><code>In [9]: valueListStr = [] * i
In [10]: valueListStr
Out[10]: []
In [11]: valueListStr = [[] for _ in range(i)]
In [12]: valueListStr
Out[12]: [[], [], [], []]
</code></pre>
<p>所以为什么会出现错误是因为<code>valueListStr[j].extend(splitList)</code>,不能为空列表编制索引。你知道吗</p>
<p>实际上,您似乎没有在任何地方返回列表,因此我假设您确实希望返回它,您也可以根据需要在循环中创建列表,也可以在<code>tmpList</code>和<code>openFiles(cop_node)</code>上循环:</p>
<pre><code>def valuesFiles(cop_node):
valueListStr = []
for j in openFiles(cop_node):
tmpList = j[6:]
tmpList.reverse()
tmp = []
for s in tmpList:
tmp.extend(s.split(' '))
valueListStr.append(tmp)
return valueListStr
</code></pre>
<p>使用<code>itertools.chain</code>可以变成:</p>
<pre><code>from itertools import chain
def values_files(cop_node):
return [list(chain(*(s.split(' ') for s in reversed(sub[6:]))))
for sub in openFiles(cop_node)]
</code></pre>