连接字符串列表

2024-04-23 20:15:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,其中每个元素都是一个字符:

 ngrams = [['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'],
 ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']]

由此,我想生成一个新的单列表,内容为['aa','ab','ac','ba','bb','bc','ca','cb','cc']。每个列表的各个元素彼此附加,但顺序与列表相反。我想到了这个(wherenp = 2):

for cnt in range(np-2,-1,-1):
  thisngrams[-1] = [a+b for (a,b) in zip(thisngrams[-1],thisngrams[cnt])]          

我的解决方案需要处理高于2的np。我想这是O(np),不错。有没有人能提出一个更有效的方法来做我想做的事情(或者这是一个很好的方法)?你知道吗


Tags: 方法in元素内容列表forabnp
1条回答
网友
1楼 · 发布于 2024-04-23 20:15:58

你可以试试这个:

ngrams = [['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'],
['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']]

new = map(''.join, zip(*ngrams))

输出:

['aa', 'ba', 'ca', 'ab', 'bb', 'cb', 'ac', 'bc', 'cc']

对于两个以上的元素:

n = [["a", "b", "c"], ["a", "c", "d"], ["e", "f", "g"]]

new = map(''.join, zip(* reversed(ngrams)))

#in Python3
#new = list(map(''.join, zip(* reversed(ngrams))))

输出:

['eaa', 'fcb', 'gdc']

相关问题 更多 >