使用Python将列表转换为字符串

8

我有一个列表,其中包含整数、浮点数和字符串:

lists = [10, "test", 10.5]

如何将上述列表转换成字符串?我尝试过以下方法:
val = ','.join(lists)
print val

我遇到了以下错误:

sequence item 0: expected string, int found

我该如何解决这个问题?

这个回答解决了你的问题吗?将列表中的项连接为字符串 - bad_coder
10个回答

17

首先使用str函数将整数转换为字符串,使用map函数,然后再使用join函数连接字符串-

>>> ','.join(map(str,[10,"test",10.5]) )#since added comma inside the single quote output will be comma(,) separated
>>> '10,test,10.5'

或者,如果你想将列表中的每个元素转换为字符串,请尝试以下方法-

>>> map(str,[10,"test",10.5])
>>> ['10', 'test', '10.5']

或者对于内存效率(大数据)可以使用 itertools

>>>from itertools import imap
>>>[i for i in imap(str,[10,"test",10.5])]
>>>['10', 'test', '10.5']

或者简单地使用列表推导式

>>>my_list=['10', 'test', 10.5]
>>>my_string_list=[str(i) for i in my_list]
>>>my_string_list
>>>['10', 'test', '10.5']

在Python 3中,imap不再包含在itertools中。请改用map。https://dev59.com/-F0a5IYBdhLWcg3wfIp- - SeaDude

6

最简单的方法是将整个内容发送到 str()repr()

>>> lists = [10, "test", 10.5]
>>> str(lists)
"[10, 'test', 10.5]"

repr()str() 在处理 list 对象时可能会有不同结果,这取决于每种类型的对象如何定义。使用 repr() 的意义在于可以将这些字符串发送回 eval()ast.literal_eval() 来获取原始对象:

>>> import ast
>>> lists = [10, "test", 10.5]
>>> ast.literal_eval(repr(lists))
[10, 'test', 10.5]

4
a = ['b','c','d']
strng = ''
for i in a:
   strng +=str(i)
print strng

a = ['b','c','d'] ==> 让我们把它作为一个列表 strng = '' ==> 让我们用空字符串初始化变量strng" for i in a: ==> 遍历列表中的每个元素并与strng连接 strng +=str(i) print strng ==> 最后打印所需的strng - Ashok

1
你遇到的错误是因为join要求元素为string类型,但你的列表中也有integer,所以首先你需要将它们转换为字符串类型。
你可以使用列表推导式和str和join来连接它们。
>>> lists = [10,"test",10.5]
>>> ",".join(str(x) for x in lists)

1

您需要将列表中的每个项目作为字符串传递给','.join(sequence)。考虑使用:

val = ','.join([str(item) for item in lists])

打印val。


最简单的解决方案是使用列表推导式,并利用str(item)如果已经是str,则不会改变item的特点。这个或者TigerhawkT3的解决方案应该被选为最佳答案。 - mins

0
如果你想将列表中的每个元素转换为字符串,你可以简单地使用for循环来实现。
for i in range(len(lists)):
    lists[i] = str(lists[i])

或者,如果您想要创建一个将所有元素连接在一起的字符串,您可以稍微编辑上面的代码。

string_of_lists = ""
for i in lists:
    string_of_lists += str(i)

正如你所看到的,这是另一种方法,与使用join的其他解决方案不同。

希望能对你有所帮助!


0

这也是可能的。这里的x变量是列表。

>>> '%s'*len(x) % tuple(x)

0
import functools
lists = [10,"test",10.5]
print(functools.reduce(lambda x,y:x+","+y,list(map(str,lists))))

4
你能再解释一下吗? - Dieter Meemken
在 reduce 函数中,最初 x 和 y 从列表中取值,之后 x 存储结果值,y 从列表中获取新值。(例如,x=10,y=test,则 x+","+y=10,test,现在在第二步中 x=10,test,y=10.5,现在 x+","+y 变成了 10,test,10.5,这是最终的答案) - Prince Vijay

0

你总是可以用一些“不正常”的方式来实现:

     list_name = ["a", "b", "c"];
     string_name = "";

     for c in list_name:
         string_name += c
     print(string_name)
     

输出:

    "abc"

这应该适用于整数、浮点数和字符串,始终将它们转换为字符串类型。


1
欢迎来到SO!感谢您抽出时间回答这个问题。不过,请尝试使用OP提供的列表来测试您的解决方案。也许您之后想要更改您的解决方案。 - above_c_level

0

此处所述

 list=['a/b/c', 'd/e/f']
 file_list_string= ' '.join(list)
 file_list_string= ' '.join(str(file) for file in list)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接