如果您有一长列[['A',1,2],['B',3,4]]
格式的列表,并且您希望将其合并到['A, 1, 2', 'B, 3, 4']
,那么是否有一种简单的列表理解方式?
我这样做:
this_list = [['A',1,2],['B',3,4]]
final = list()
for x in this_list:
final.append(', '.join([str(x) for x in x]))
但这是否可以作为一个班轮来完成?
感谢您的回答。我喜欢基于map()的一个。我有一个后续问题 - 如果子列表不是格式['A',0.111,0.123456]
,那么可以在列表解析中包含一个字符串格式化部分来截断,例如取出'A, 0.1, 0.12'
再次使用我丑陋的代码,就像是:
this_list = [['A',0.111,0.12345],['B',0.1,0.2]]
final = list()
for x in this_list:
x = '{}, {:.1f}, {:.2f}'.format(x[0], x[1], x[2])
final.append(x)
我解决了自己的问题:
values = ['{}, {:.2f}, {:.3f}'.format(c,i,f) for c,i,f in values]
答案 0 :(得分:5)
>>> lis = [['A',1,2],['B',3,4]]
>>> [', '.join(map(str, x)) for x in lis ]
['A, 1, 2', 'B, 3, 4']
答案 1 :(得分:2)
您可以将嵌套list comprehensions与str.join
一起使用:
>>> lst = [['A',1,2],['B',3,4]]
>>> [", ".join([str(y) for y in x]) for x in lst]
['A, 1, 2', 'B, 3, 4']
>>>
答案 2 :(得分:0)
li = [['A',1,2],['B',3,4],['A',0.111,0.123456]]
print [', '.join(map(str,sli)) for sli in li]
def func(x):
try:
return str(int(str(x)))
except:
try:
return '%.2f' % float(str(x))
except:
return str(x)
print map(lambda subli: ', '.join(map(func,subli)) , li)
返回
['A, 1, 2', 'B, 3, 4', 'A, 0.111, 0.123456']
['A, 1, 2', 'B, 3, 4', 'A, 0.11, 0.12']