You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用join()将字符列表转单个整数时触发ValueError?

字符列表转整数:join()方法触发ValueError的原因及解决办法

我尝试用两种方法把字符列表转成单个整数:

方法一:for循环(正常运行)

>>> a_list = "123456789"
>>> a_list = list(a_list)
>>> b_int = ""
>>> for num in a_list:
...     b_int += num
...
>>> print(int(b_int))

123456789

方法二:join()方法(触发报错)

>>> a_list = "123456789"
>>> c_int = ""
>>> c_int.join(a_list)
>>> print(int(c_int))

Traceback (most recent call last):
  File "xxx.py", line 4, in <module>
    print(int(c_int))
          ^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''

报错原因

你犯了一个常见的小错误:Python的字符串join()方法不会修改原变量,而是返回一个拼接好的新字符串。你只调用了c_int.join(a_list),但没有把返回的结果重新赋值给c_int,所以c_int始终是初始的空字符串"",把空字符串转成整数自然会触发ValueError。

正确的join()用法

把join的返回值赋值给c_int就行,代码如下:

>>> a_list = "123456789"
>>> a_list = list(a_list)
>>> c_int = "".join(a_list)
>>> print(int(c_int))

123456789

甚至可以简化,因为原本的a_list是字符串,直接用"".join()也能处理(字符串本身就是可迭代的字符序列):

>>> a_str = "123456789"
>>> c_int = "".join(a_str)
>>> print(int(c_int))

123456789

join()确实是更优方案,因为它是Python内置的高效字符串拼接方法,比循环逐个拼接的性能更好,尤其是处理长序列的时候。

内容的提问来源于stack exchange,提问作者Player1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:55:26