[['chang'], ['du'], ['zhang', 'chang']] 如何拼成 “changduchangchangduzhang”呢

2019 年 2 月 1 日
 twor
[['chang'], ['du'], ['zhang', 'chang']] 如何拼成 “ changduchangchangduzhang ”呢
用途就是生成字段的拼音的各种情况,方便拼音检索
或者有其他思路?
3720 次点击
所在节点    Python
17 条回复
zst
2019 年 2 月 1 日
可以 flatten 以后直接拼起来?
momocraft
2019 年 2 月 1 日
.reduce(笛卡尔积).map(join).join (然后自己改成 python 语法)
EulerChen
2019 年 2 月 1 日
arr.flat().join('')即可

flat 特性已在 ES2019 正式支持
sdijeenx
2019 年 2 月 1 日
>>> for i in itertools.permutations([['chang'], ['du'], ['zhang', 'chang']] , 3):
... print(i)
...
(['chang'], ['du'], ['zhang', 'chang'])
(['chang'], ['zhang', 'chang'], ['du'])
(['du'], ['chang'], ['zhang', 'chang'])
(['du'], ['zhang', 'chang'], ['chang'])
(['zhang', 'chang'], ['chang'], ['du'])
(['zhang', 'chang'], ['du'], ['chang'])

这样应该满足 LZ 要求=3=
Trim21
2019 年 2 月 1 日
先 flat 再 join
Procumbens
2019 年 2 月 1 日
import itertools
sample = [['chang'], ['du'], ['zhang', 'chang']]
result = list(itertools.product(*sample))
for i in result:
print(''.join(i))
Procumbens
2019 年 2 月 1 日
就 2L 说的笛卡尔积是对的,LS 说 flat 的都没了解 LZ 想要什么……
BTW,LS 我的代码最后一行的缩进被吃了👀
sdijeenx
2019 年 2 月 1 日
刚才又写了个偷鸡算法,结果还是 LS 的更好用。
dushixiang
2019 年 2 月 1 日
flatMap 成一个数组,然后拼成一个串。
loading
2019 年 2 月 1 日
楼上都很厉害,我只能发个结帖算法了:
if foo=="[['chang'], ['du'], ['zhang', 'chang']] " then
foo="changduchangchangduzhang"
fonlan
2019 年 2 月 1 日
再来个另类的,把 List 转 str 然后用正则取出所有字母即可
jiejiss
2019 年 2 月 1 日
用 built in 的工具库算笛卡尔积,或者手写 DFS。DFS 递归写着还蛮方便的。之前不知道笛卡尔积的时候就是手写的 DFS
jiejiss
2019 年 2 月 1 日
或者把大数组当成一个有向图,每个子数组都是一层,每个字符串是一个节点。之后强行在最前面插一个空字符串节点来充当根结点。之后遍历一遍就好了
wuhaochen999
2019 年 2 月 1 日
cartesian product
Ama2in9
2019 年 2 月 1 日
@loading 哈哈哈哈哈你他娘的真是个人才
qilishasha
2019 年 2 月 2 日
@loading 优秀的程序员很多,有趣的灵魂唯独你一只
luoleng
2019 年 2 月 15 日
''.join(re.findall(r'\w+?', str(your_list)))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/532518

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX