Python列表到字符串的转换
时间:2020-02-23 14:42:56 来源:igfitidea点击:
有时我们想将列表转换为字符串,以便我们可以打印或者记录该列表以进行调试。
在本教程中,我们将学习如何在Python程序中将列表转换为字符串。
Python列表到字符串的转换
如果列表包含字符串int浮点数,则在我们打印列表时将打印其元素值。
l1 = [1, 2, 3] print(l1) l1 = ['A', 'B', 'C'] print(l1) l1 = ['A', 'B', 'C', 1, 2, 3.5] print(l1)
输出:
[1, 2, 3] ['A', 'B', 'C'] ['A', 'B', 'C', 1, 2, 3.5]
如果您不想在输出中使用括号,则可以使用string strip()函数或者切片将其删除。
print(str(l1).strip('[]')) print(str(l1)[1:-1])
输出:
'A', 'B', 'C', 1, 2, 3.5 'A', 'B', 'C', 1, 2, 3.5
Python对象列表到字符串的转换
让我们看看列表包含自定义对象时会发生什么。
class Data: id = 0 def __init__(self, i): id = i l1 = [Data(10), Data(20)] print(l1)
输出:
[<__main__.Data object at 0x10f3dd320>, <__main__.Data object at 0x10f3dd2e8>]
该信息无用,因为它不包含有关Data对象的任何信息。
当我们打印列表时,它尝试调用其元素__repr __()函数。
由于我们的对象没有定义自己的repr()函数,因此将调用其超类对象repr()来打印此信息。
让我们为Data类定义__repr __()函数,如下所示:
def __repr__(self): return f'Data[{self.id}]'
现在,上述打印语句的输出将是:
[Data[0], Data[0]]
有时,一个对象仅定义__str __()函数,而没有定义__repr __()函数。
在这种情况下,我们可以通过在其元素上调用str()函数将列表转换为字符串。
这可以通过使用带有迭代器作为参数的字符串join()函数或者通过使用map()函数来完成。
我们将Data类的__str __()函数定义为:
def __str__(self): return f'D[{self.id}]'
现在我们可以获取列表元素的字符串表示形式,并使用以下代码进行打印:
print(', '.join(map(str, l1))) print(', '.join(str(e) for e in l1))
输出:
D[0], D[0] D[0], D[0]
请注意,如果未为对象定义__str __()函数,则str()函数将回退到调用__repr __()函数。
在这种情况下,__repr __()应该返回字符串对象。
如果我们从Data类中删除__str __()函数,则以上join()片段输出将为:
Data[0], Data[0] Data[0], Data[0]
使用join()函数时,我们可以指定自己的定界符。
print('|'.join(map(str, l1))) print('#'.join(str(e) for e in l1))
输出:
D[0]|D[0] D[0]#D[0]