合并列表中的元素

时间:2018-10-13 14:32:20

标签: python list

我有一个这样的列表列表:

A = [('b', 'a', 'a', 'a', 'a'), ('b', 'a', 'a', 'a', 'a')]

如何合并每个内部列表的所有元素以获得结果A = ['baaaa', 'baaaa']? 如果可能的话,我希望在循环外执行此操作,以加快代码的速度。

4 个答案:

答案 0 :(得分:4)

您可以使用str.join

>>> ["".join(t) for t in A]
['baaaa', 'baaaa']
>>>
>>>
>>> list(map(''.join, A)        #with map
['baaaa', 'baaaa']
>>>
>>> help(str.join)
Help on method_descriptor:

join(...)
    S.join(iterable) -> str

    Return a string which is the concatenation of the strings in the
    iterable.  The separator between elements is S.

>>>

答案 1 :(得分:4)

如果您不想编写循环,则可以使用mapstr.join

>>> list(map(''.join, A))
['baaaa', 'baaaa']

但是,使用list comprehension的循环几乎一样短,而且我认为更清楚:

>>> [''.join(e) for e in A]
['baaaa', 'baaaa']

答案 2 :(得分:1)

使用空字符串的join方法。这意味着:“创建一个字符串,将元组的每个元素(例如@FeignClient(value = "http://downloader") public interface DownloadService { @RequestMapping(value = "/downloader/api/", method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE }) void downloadFile(@PathVariable("file") String fileName); } )与('b', 'a', 'a', 'a', 'a')(空字符串)之间连接起来。

因此,您正在寻找的是:

''

答案 3 :(得分:0)

如果您喜欢函数式编程。您可以使用功能减少。以下是使用reduce函数实现相同结果的方法。

  

请注意,reduce是python 2.7中的内置函数,但在python中   3将其移至库functools

ngAfterViewInit

仅当您使用python 3时才需要导入reduce,否则无需从functools导入reduce

from functools import reduce

如果您不想使用循环甚至列表理解,这是另一种方法

A = [('b', 'a', 'a', 'a', 'a'), ('b', 'a', 'a', 'a', 'a')]
result = [reduce(lambda a, b: a+b, i) for i in A]