我有一个这样的列表列表:
A = [('b', 'a', 'a', 'a', 'a'), ('b', 'a', 'a', 'a', 'a')]
如何合并每个内部列表的所有元素以获得结果A = ['baaaa', 'baaaa']
?
如果可能的话,我希望在循环外执行此操作,以加快代码的速度。
答案 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)
>>> 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]