<p>Python有一个<a href="https://docs.python.org/3/library/functions.html#map" rel="nofollow noreferrer">map</a>函数,它接受一个函数和一个iterable。还有<a href="https://docs.python.org/3/library/functions.html#sum" rel="nofollow noreferrer">sum</a>函数,它返回iterable的和。你知道吗</p>
<p>您可以使用:</p>
<pre><code>sum(map(int(trip_list))
</code></pre>
<p>请注意,map函数不返回列表,而是返回生成器。要将其转换为列表,请使用</p>
<pre><code>list(sum(map(int, trip_list)))
</code></pre>
<p>(这可能需要一段时间,因为它需要遍历整个列表,而您的列表相当长)。你知道吗</p>
<p>代码的错误是将列表转换为字符串</p>
<pre><code>>>> my_list = ["5", "6"]
>>> my_list_str = str(my_list)
>>> my_list_str
"['5', '6']"
>>> type(my_list_str)
<class 'str'>
>>> type(my_list)
<class 'list'>
</code></pre>
<p>因此,当您尝试迭代字符串时,第一个<code>x</code>是<code>[</code>,它不是一个数字(因此是异常)。你知道吗</p>
<p>作为旁注,使用<code>list(map(int, a_list))</code>比<code>[int(i) for i in a_list]</code>快</p>
<pre><code>>>> c1 = "list(map(int, a_list))"
>>> c2 = "[int(i) for i in a_list]"
>>> s = "a_list = [str(i) for i in range(1000)]"
>>> import timeit
>>> timeit.timeit(c1, setup=s, number=10000)
1.9165708439999918
>>> >>> timeit.timeit(c2, setup=s, number=10000)
2.470973639999997
</code></pre>