在一个列表中,在Python中映射到字符串和转换为字符串有什么区别?



使用 Python 3,我尝试通过将列表元素转换为字符串来连接它。据说要连接列表的所有元素,必须将所有元素转换为字符串。所以我只是将整个列表转换为字符串并尝试加入列表,但它没有给出所需的输出。

l = [1,2,3]
print("L type ",type(l))
print("Type of element ",type(l[0]))
d = str(l)
print("D type ",type(d))
print("Joining d ","".join(d))
print("D[0] type ",type(d[0]))
f = "".join(map(str,(l)))
print("F is ",f)
e = "".join(str(l))
print("E is ",e)

输出为:

L type  <class 'list'>
Type of element  <class 'int'>
D type  <class 'str'>
Joining d  [1, 2, 3]
D[0] type  <class 'str'>
F is  123
E is  [1, 2, 3]

但是当我将列表的每个元素映射到字符串时,它通过连接字符串给出了正确的答案。 但是如果我将整个列表转换为字符串,并且列表的每个元素都是一个字符串 Eg:(D[0] 类型<类>) 为什么它没有连接元素? 如果我在加入时将元素转换为字符串,它只会再次返回原始列表。

使用地图有什么不同? 那么任何人都可以解释一下映射到字符串和转换为字符串有什么区别吗? 加入列表的基本标准是什么?

我需要任何人解释映射到字符串和转换为字符串有什么区别? 加入列表的基本标准是什么?

将列表转换为字符串会得到一个字符串 - 与print列表时得到的字符串相同,[在末端,,分隔元素。

>>> a
[1, 2, 3]
>>> str(a)
'[1, 2, 3]'

在上面的 REPL 会话中,a是一个列表,str(a)是一个表示列表的字符串。 (注意引号!

如果您join一个以''作为分隔符的字符串,则只会返回相同的字符串。 字符串是什么并不重要。

>>> ''.join(str(a))
'[1, 2, 3]'
>>> ''.join("foo")
'foo'

如果你用一个不是空字符串的分隔符join它,就更容易看到发生了什么——我们只是获取字符串的每个字符并在它们之间插入分隔符。join字符串以这种方式运行的原因是字符串本身是字符串(其单个字符)的可迭代对象。

>>> '-'.join("foo")
'f-o-o'
>>> '-'.join('[1, 2, 3]')
'[-1-,- -2-,- -3-]'
>>> '-'.join(str(a))
'[-1-,- -2-,- -3-]'

如果map列表上的str函数,则会得到一个列表,其中每个元素都转换为字符串。map对象本身没有有用的字符串表示形式,但您可以将map转换为list,这确实如此。

>>> a
[1, 2, 3]
>>> map(str, a)
<map object at 0x000002D6118DA9E0>
>>> list(map(str, a))
['1', '2', '3']

再次注意引号——1int'1'str

如果我们join字符串列表,我们将所有单独的字符串组合成一个字符串:

>>> ''.join(['1', '2', '3'])
'123'

我们可以以完全相同的方式joinmap,而无需先将其转换为list

>>> ''.join(map(str, a))
'123'

最新更新