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