【问题标题】:convert list to string in python [duplicate]在python中将列表转换为字符串[重复]
【发布时间】:2020-04-22 18:44:33
【问题描述】:
TypeError: can only join an iterable

我正在尝试将整数列表转换为字符串。它向我显示了上述错误。我做错了什么?

预期输出:10,5,78

l=[10,5,78]
s=''
for i in l:
    s=s.join(i)
print(s)

【问题讨论】:

  • 正如错误信息所说,s.join“只能加入一个可迭代对象”。 i 是可迭代的吗?不,它是一个整数,整数不能被迭代。你可以直接s = str(l)[1:-1],例如
  • l = [10,5,78]; ",".join([str(i) for i in l])
  • @VishalPallikonda,它将l 转换为字符串"[10, 5, 78]" 并返回除了第一个(1)和最后一个(-1)字符(括号)之外的字符。 [1:-1] 语法称为 slicing
  • 如果你想用逗号分隔数字,你只需要s = ''.join(str(_) for _ in l)s = ','.join(str(_) for _ in l)
  • @Tim,输出非常接近,不过(我 90% 确定空格在这里没有那么重要),并且很容易使其与所需的输出完全匹配:@987654334 @

标签: python python-3.x


【解决方案1】:

加入的工作方式并非您认为的那样。

加入的作用:

",".join(["a", "b", "c"])

"a,b,c"。本质上,它使用您在.join 之前提供的内容从列表中的元素创建一个字符串,在这种情况下它是一个逗号。

所以你想要的可以通过

",".join(str(x) for x in l)

inside 表达式将列表l 中的整数转换为字符串,然后用逗号连接它们。

【讨论】:

    【解决方案2】:

    .join() 方法作用于现有字符串并接受字符串列表。加入给定列表的每个项目,由作用于的字符串分隔。

    >>> l = [10, 5, 78]
    >>> l = [str(i) for i in l]    # map to a list of strings
    >>> s = ','.join(l)            # join all the strings separated by a comma
    >>> s
    '10,5,78'
    

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2021-06-19
      相关资源
      最近更新 更多