下酒菜
代码语言:javascript复制class Obj:
def __init__(self, val):
self.val = val
def __str__(self):
return str(self.val)
lst = [Obj(0), Obj(1), Obj(2), Obj(4)]
# 输出
0124
1 Join List Str
首先,该string.join(iterable)
方法是使用iterable
字符串作为输入,并使用string
将它们串起来。
其次,创建列表
最后使用 str(...)
函数将任何 Python 对象转换为字符串表示形式。
结合这三个功能,可以得到以下简单的解决方案,以连接对象列表的字符串表示形式。
代码语言:javascript复制print(''.join([str(x) for x in lst]))
# 0124
2 十转八 Join Generator Expression(生成器) Str
由于join()
函数需要一个字符串列表,因此需要使用 str(x)
函数将所有对象转换为纯字符串。
图片来源互联网
但是,一次转换一个对象就足够了,因为join函数只需要一个可迭代的输入即可。(所有Python列表都是可迭代的,但并非所有可迭代对象都是Python列表)
要释放内存,可以使用生成器表达式(无需创建列表所需的方括号):
代码语言:javascript复制print(''.join(str(x) for x in lst))
# 0124
3 Join Generator Expression(生成器) Custom String Representation(自定义字符串)
对 2 稍作修改是使用自己定义字符串的表示形式,不是使用__str__
方法实现。
print(''.join(str(x.val) for x in lst))# 0124
4 join map Lambda
map()
函数将每个元组转换为字符串值,并且使用 join()
方法将字符串集合转换为单个字符串。
Lambda 函数是未在名称空间中定义的匿名函数 。
语法为:lambda <argument name(s)> : <return expression>
。
print(''.join(map(lambda x: str(x), lst)))# 0124
5 Join Map Str
无需使用 lambda 函数将每个列表元素转换为字符串形式。
代码语言:javascript复制print(''.join(map(str, lst)))# 0124
6 Simple Loop(循环) Str
当然,还可以通过使用简单的for循环构建字符串解决问题
代码语言:javascript复制s = ''for x in lst: s = str(x)print(s)# 0124
---End---