如何解决如何使用漂亮的分隔符在python中将列表元组列表转换为字符串
|| 将列表/元组列表转换为带有增量缩进的字符串的最佳方法是什么? 到目前为止,我已经有了这样的功能def a2s(a,inc = 0):
inc += 1
sep = \' \' * inc
if type(a) == type(list()) or type(a) == type(tuple()):
a = sep.join(map(a2s,a))
else:
a = str(a)
return a
它会给
>>> a=[[1,2],[3,4]]
>>> a2s(a)
\'1 2 3 4\'
所以问题是如何使[1,2]
和[3,4]
之间的增量更大,像这样
>>> a2s(a)
\'1 2 3 4\'
是否有任何方法通过map函数传递不可迭代的\'inc \'参数?还是其他方式可以做到这一点?
解决方法
这是您需要的:
import collections
def a2s(a):
res = \'\'
if isinstance(a,collections.Iterable):
for item in a:
res += str(a2s(item)) + \' \'
else:
res = str(a)
return res
用法:
a = [ [1,2],[3,4] ]
print(a2s(a))
>>> 1 2 3 4
递归岩! :)
, 您可以通过以下方式修改您的函数:
def list_to_string(lVals,spacesCount=1):
for i,val in enumerate(lVals):
strToApp = \' \'.join(map(str,val))
if i == 0:
res = strToApp
else:
res += \' \' * spacesCount + strToApp
return res
print list_to_string(a)# \'1 2 3 4\'
print list_to_string(a,2)# \'1 2 3 4\'
print list_to_string(a,3)# \'1 2 3 4\'
还是有点怪,但是:
from collections import Iterable
data = [[1,4],[5,6],7]
def list_to_string(lVals,spacesCount=3):
joinVals = lambda vals: \' \'.join(map(str,vals)) if isinstance(vals,Iterable) else str(vals)
return reduce(lambda res,x: joinVals(res) + (\' \' * spacesCount) + joinVals(x),lVals)
list_to_string(data,4)
并且最好使用\'isinstance \'而不是\'type(val)== type(list())\',或者您可以在[list,tuple,set] \中使用\'type(val)\' 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。