[['chang'], ['du'], ['zhang', 'chang']] 如何拼成 “ changduchangchangduzhang ”呢
用途就是生成字段的拼音的各种情况,方便拼音检索
或者有其他思路?
用途就是生成字段的拼音的各种情况,方便拼音检索
或者有其他思路?

1 zst Feb 1, 2019 via Android 可以 flatten 以后直接拼起来? |
2 momocraft Feb 1, 2019 .reduce(笛卡尔积).map(join).join (然后自己改成 python 语法) |
3 EulerChen Feb 1, 2019 via Android arr.flat().join('')即可 flat 特性已在 ES2019 正式支持 |
4 sdijeenx Feb 1, 2019 >>> 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= |
5 Trim21 Feb 1, 2019 via Android 先 flat 再 join |
6 Procumbens Feb 1, 2019 import itertools sample = [['chang'], ['du'], ['zhang', 'chang']] result = list(itertools.product(*sample)) for i in result: print(''.join(i)) |
7 Procumbens Feb 1, 2019 就 2L 说的笛卡尔积是对的,LS 说 flat 的都没了解 LZ 想要什么…… BTW,LS 我的代码最后一行的缩进被吃了 |
8 sdijeenx Feb 1, 2019 刚才又写了个偷鸡算法,结果还是 LS 的更好用。 |
9 dushixiang Feb 1, 2019 via iPhone flatMap 成一个数组,然后拼成一个串。 |
| div class="fr"> 10 loading Feb 1, 2019 via Android 楼上都很厉害,我只能发个结帖算法了: if foo=="[['chang'], ['du'], ['zhang', 'chang']] " then foo="changduchangchangduzhang" |
11 fonlan Feb 1, 2019 via Android 再来个另类的,把 List 转 str 然后用正则取出所有字母即可 |
12 jiejiss Feb 1, 2019 via Android 用 built in 的工具库算笛卡尔积,或者手写 DFS。DFS 递归写着还蛮方便的。之前不知道笛卡尔积的时候就是手写的 DFS |
13 jiejiss Feb 1, 2019 via Android 或者把大数组当成一个有向图,每个子数组都是一层,每个字符串是一个节点。之后强行在最前面插一个空字符串节点来充当根结点。之后遍历一遍就好了 |
14 wuhaochen999 Feb 1, 2019 cartesian product |
16 qilishasha Feb 2, 2019 @loading 优秀的程序员很多,有趣的灵魂唯独你一只 |
17 luoleng Feb 15, 2019 ''.join(re.findall(r'\w+?', str(your_list))) |