首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加入字符串列表

加入字符串列表
EN

Stack Overflow用户
提问于 2017-06-19 14:11:08
回答 1查看 83关注 0票数 1

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

代码语言:javascript
复制
 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']生成一个新的单一列表。每个列表的各个元素相互附加,但按列表的顺序相反。我想出了这个(其中的np = 2):

代码语言:javascript
复制
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),这并不坏。有人能建议一种更有效率和更有效的节能型方法来做我想做的事情吗(或者这是一种很好的琵琶方法)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-19 14:13:06

你可以试试这个:

代码语言:javascript
复制
ngrams = [['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'],
['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']]

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

输出:

代码语言:javascript
复制
['aa', 'ba', 'ca', 'ab', 'bb', 'cb', 'ac', 'bc', 'cc']

有两个以上的要素:

代码语言:javascript
复制
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))))

输出:

代码语言:javascript
复制
['eaa', 'fcb', 'gdc']
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44632877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档