<p>好吧,我想现在我明白问题所在了。似乎您在代码中这样做:</p>
<pre><code>lists = readCSVfile(str1)
volume = []
for listitem in lists:
volumelist = getVolume(listitem[2], listitem[3], listitem[4])
volume.append(volumelist)
carbon = []
for listitem in lists:
carbonlist = getAmountOfCarbon(volume)
carbon.append(carbonlist)
</code></pre>
<p>在这里,第二个循环中的<code>volume</code>仍然是第一个循环中创建的卷的整个列表,您正试图将该列表转换为一个“carbon”值(因此是<code>TypeError</code>),并将其附加到<code>carbon</code>列表中原始<code>lists</code>中的每个值!这似乎没有多大意义。你知道吗</p>
<p>相反,请尝试以下方法:</p>
<pre><code>carbon = []
for listitem in volume:
carbonlist = getAmountOfCarbon(listitem)
carbon.append(carbonlist)
</code></pre>
<p>或使用<code>map</code>(仅限Python 2):</p>
<pre><code>carbon = map(getAmountOfCarbon, volume)
</code></pre>
<p>或者作为一个列表:</p>
<pre><code>carbon = [getAmountOfCarbon(x) for x in volume]
</code></pre>
<p>或一次全部(未测试):</p>
<pre><code>carbon = [getAmountOfCarbon(volume(*lst[2:5])) for lst in lists]
</code></pre>
<p>另外,请注意<code>readCSVfile</code>函数中的代码都是重复的。你可以这样做:</p>
<pre><code>def readCSVfile(str1):
with open(str1 + '.csv', 'r+') as f:
....
</code></pre>