大家好,又见面了,我是你们的朋友全栈君。
python字符串转化列表
Sometimes we want to convert the list to a string so that we can print it or log it for debugging purposes. In this tutorial, we will learn how to convert a list to string in a Python program.
有时我们希望将列表转换为字符串,以便我们可以打印或记录该列表以进行调试。 在本教程中,我们将学习如何在Python程序中将列表转换为字符串。
If the list contains a string, int, floats then its elements values are getting printed when we print the list.
如果列表包含字符串int浮点数,则在我们打印列表时将打印其元素值。
l1 = [1, 2, 3]
print(l1)
l1 = ['A', 'B', 'C']
print(l1)
l1 = ['A', 'B', 'C', 1, 2, 3.5]
print(l1)
Output:
输出:
[1, 2, 3]
['A', 'B', 'C']
['A', 'B', 'C', 1, 2, 3.5]
If you don’t want brackets in the output, you can use string strip() function or slicing to remove them.
如果不想在输出中使用括号,则可以使用字符串strip()函数或切片将其删除。
print(str(l1).strip('[]'))
print(str(l1)[1:-1])
Output:
输出:
'A', 'B', 'C', 1, 2, 3.5
'A', 'B', 'C', 1, 2, 3.5
Let’s see what happens when our list contains custom objects.
让我们看看列表包含自定义对象时会发生什么。
class Data:
id = 0
def __init__(self, i):
id = i
l1 = [Data(10), Data(20)]
print(l1)
Output:
输出:
[<__main__.Data object at 0x10f3dd320>, <__main__.Data object at 0x10f3dd2e8>]
The information is not useful because it doesn’t contain any information about Data objects.
该信息无用,因为它不包含有关Data对象的任何信息。
When we print a list, it tries to invoke its elements __repr__() function. Since our object doesn’t define its own repr() function, its superclass object repr() is called which prints this information.
当我们打印列表时,它会尝试调用其元素__repr __()函数。 由于我们的对象没有定义自己的repr()函数,因此将调用其超类对象repr()来打印此信息。
Let’s define __repr__() function for Data class as follows:
让我们为Data类定义__repr __()函数,如下所示:
def __repr__(self):
return f'Data[{self.id}]'
Now the output of above print statement will be:
现在,上述打印语句的输出将是:
[Data[0], Data[0]]
Sometimes an object defines only __str__() function and doesn’t define __repr__() function. In that case, we can convert the list to string by calling str() function on its elements.
有时,一个对象仅定义__str __()函数,而没有定义__repr __()函数。 在这种情况下,我们可以通过在其元素上调用str()函数将列表转换为字符串。
This can be done by using string join() function with an iterator as argument or by using map() function.
这可以通过使用带有迭代器作为参数的字符串join()函数或通过使用map()函数来完成 。
Let’s define __str__() function for Data class as:
让我们为Data类定义__str __()函数为:
def __str__(self):
return f'D[{self.id}]'
Now we can get string representation of the list elements and print it using following code:
现在,我们可以获取列表元素的字符串表示形式,并使用以下代码进行打印:
print(', '.join(map(str, l1)))
print(', '.join(str(e) for e in l1))
Output:
输出:
D[0], D[0]
D[0], D[0]
Note that if __str__() function is not defined for an object, str() function fallback to calling __repr__() function. In that case __repr__() should return string object.
请注意,如果未为对象定义__str __()函数,则str()函数将回退到调用__repr __()函数。 在这种情况下,__repr __()应该返回字符串对象。
If we remove __str__() function from Data class, then above join() snippets output will be:
如果我们从Data类中删除__str __()函数,则以上join()片段输出将为:
Data[0], Data[0]
Data[0], Data[0]
We can specify our own delimiter when using join() function.
使用join()函数时,我们可以指定自己的定界符。
print('|'.join(map(str, l1)))
print('#'.join(str(e) for e in l1))
Output:
输出:
D[0]|D[0]
D[0]#D[0]
GitHub Repository. GitHub存储库中检出完整的python脚本和更多示例。
翻译自: https://www.journaldev.com/23655/python-list-to-string-conversion
python字符串转化列表
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142963.html原文链接:https://javaforall.cn