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

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

flat 特性已在 ES2019 正式支持
sdijeenx
2019-02-01 20:32:43 +08:00
>>> 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-02-01 20:38:28 +08:00
先 flat 再 join
Procumbens
2019-02-01 20:55:03 +08:00
import itertools
sample = [['chang'], ['du'], ['zhang', 'chang']]
result = list(itertools.product(*sample))
for i in result:
print(''.join(i))
Procumbens
2019-02-01 20:56:50 +08:00
就 2L 说的笛卡尔积是对的,LS 说 flat 的都没了解 LZ 想要什么……
BTW,LS 我的代码最后一行的缩进被吃了👀
sdijeenx
2019-02-01 21:16:06 +08:00
刚才又写了个偷鸡算法,结果还是 LS 的更好用。
FreeEx
2019-02-01 21:19:35 +08:00
flatMap 成一个数组,然后拼成一个串。
loading
2019-02-01 21:20:15 +08:00
楼上都很厉害,我只能发个结帖算法了:
if foo=="[['chang'], ['du'], ['zhang', 'chang']] " then
foo="changduchangchangduzhang"
fonlan
2019-02-01 21:47:01 +08:00
再来个另类的,把 List 转 str 然后用正则取出所有字母即可
jiejiss
2019-02-01 22:14:12 +08:00
用 built in 的工具库算笛卡尔积,或者手写 DFS。DFS 递归写着还蛮方便的。之前不知道笛卡尔积的时候就是手写的 DFS
jiejiss
2019-02-01 22:17:27 +08:00
或者把大数组当成一个有向图,每个子数组都是一层,每个字符串是一个节点。之后强行在最前面插一个空字符串节点来充当根结点。之后遍历一遍就好了
wuhaochen999
2019-02-01 22:57:10 +08:00
cartesian product
Ama2in9
2019-02-01 23:01:01 +08:00
@loading 哈哈哈哈哈你他娘的真是个人才
qilishasha
2019-02-02 08:25:08 +08:00
@loading 优秀的程序员很多,有趣的灵魂唯独你一只
luoleng
2019-02-15 00:44:39 +08:00
''.join(re.findall(r'\w+?', str(your_list)))

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

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

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

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

© 2021 V2EX