我有一个类似的列表:
[('name', ''),
('season', ''),
('company', ''),
('date', ''),
('mean value', 1),
('mean value', 2),
('mean value', 3),
('mean value', 4)]
我想去掉元组,并在两个值之间合并(如果存在(,以获得以下列表:
['name',
'season',
'company',
'date',
'mean value 1',
'mean value 2',
'mean value 3',
'mean value 4']
我不知道如何做到这一点,正在寻找有效的方法。
如果要添加空格(mean value 4
(:
[f"{a} {b}".strip() for a, b in lst]
如果您不需要空间('mean value4'
(:
[f"{a}{b}" for a, b in lst]
注意:这个答案只适用于长度为2 的元组
list(map(lambda t: " ".join(map(str, t)), mylist))
或
[" ".join(map(str, t)) for t in mylist]
编辑:删除lambda,谢谢@Timus
我认为这段代码很容易理解并且有效。
tup = [('name', ''),('season', ''),('company', ''),('date', ''),('mean value', 1),('mean value', 2),('mean value', 3), ('mean value', 4)]
def func(value):
string = ''
for a in value:
string += str(a)
string+=' '
return string.strip()
result = list(map(func,tup))
列表理解中的if-else
如何
stuff = [('name', ''),('season', ''),('company', ''),('date', ''),('mean value', 1),('mean value', 2),('mean value', 3), ('mean value', 4)]
joined = [f'{a} {b}' if b else a for a, b in stuff]
print(joined)
检查此项:
test_list = [('name', ''),('season', ''),('company', ''),('date', ''),('mean value', 1),('mean value', 2),('mean value', 3), ('mean value', 4)]
new_list = []
for item in test_list:
new_list.append(' '.join(map(str,item)).strip())