元素添加字符串列表?

时间:2017-04-19 07:32:55

标签: python list

我想合并一些包含字符串的列表(相同长度)并在字符串之间添加空格。

输入是:

rows = [['foo', '', '', 'bar', ''],
        ['', 'bar', '', 'foo', '']]

结果是:

result = ['foo', 'bar', '' 'bar foo', '']

我目前有一个正常工作的代码:

def merge_rows(rows):                                                           
    if len(rows) < 2:                                                           
         return None                                                             
    else:                                                                                                                                     
        rowSize = len(rows[0])                                                  
        result = [u'' for _ in range(rowSize)]                                  
        for row in rows:                                                        
        for i in range(rowSize):                                            
            if result[i] and row[i]:                                        
                result[i] = result[i] + ' ' + row[i]                        

                elif result[i]:                                                 
            continue                                                    

            else:                                                           
                result[i] = row[i]                                          

  return result 

它有效,但必须有更好的方法。

2 个答案:

答案 0 :(得分:2)

zip列表然后使用join()方法获取字符串:

>>> rows = [['foo', '', '', 'bar', ''],
...         ['', 'bar', '', 'foo', ''],
...         ['1', '2', '3', '4', '5']]
>>>
>>> [" ".join(i) for i in zip(*rows)]
['foo  1', ' bar 2', '  3', 'bar foo 4', '  5']

如果您不需要领先空格,可以使用strip()lstrip()将其删除:

>>> [" ".join(i).strip() for i in zip(*rows)]
['foo  1', 'bar 2', '3', 'bar foo 4', '5']

答案 1 :(得分:1)

In [1]: rows = [['foo', '', '', 'bar', ''],
   ...:         ['', 'bar', '', 'foo', '']]

In [2]: [' '.join(i).strip() for i in zip(*rows)]

Out[2]: ['foo', 'bar', '', 'bar foo', '']
没有参数的

.strip()会删除string

开头和结尾处的所有空白区域