1
cassidyhere 2021-04-22 17:42:22 +08:00
from itertools import product
product(a, b) |
2
abersheeran 2021-04-22 17:43:53 +08:00 via Android 8
你这不叫合并,你这是算笛卡尔积。循环是少不了的,但是写法可以不一样。用 map 或者推导式。
|
3
ZoeYn OP @cassidyhere 试了一下,可以!!
|
4
ZoeYn OP @abersheeran 搜嘎!我去补一补这个知识,谢谢!
|
5
JackCooper 2021-04-22 17:46:44 +08:00
ruby 的话
2.5.7 :001 > a = [1,2,3,4] => [1, 2, 3, 4] 2.5.7 :002 > b = ['a', 'b' ,'c', 'd'] => ["a", "b", "c", "d"] 2.5.7 :003 > a.zip(b) => [[1, "a"], [2, "b"], [3, "c"], [4, "d"]] |
6
hyrious 2021-04-22 17:55:58 +08:00
@JackCooper a.product(b)
|
7
encounter2017 2021-04-22 18:38:35 +08:00 1
python 的话
from itertools import product a = [1,2] b = ['a','b','c'] list(product(a,b)) # [(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c')] scala 的话 scala> for { | a <- List(1, 2) | b <- List('a', 'b', 'c') | } yield (a,b) val res1: List[(Int, Char)] = List((1,a), (1,b), (1,c), (2,a), (2,b), (2,c)) |
8
bxb100 2021-04-22 18:48:33 +08:00
Numpy 不是一堆矩阵方法吗
|
9
Codewj 2021-04-22 18:52:40 +08:00
|
10
cyspy 2021-04-22 19:26:45 +08:00
[(x, y) for x in a for y in b]
|
11
Lordon 2021-04-22 20:01:17 +08:00
可以参考 leetcode17 题 形式上很像
|
12
css3 2021-04-22 20:26:48 +08:00
ret = [[str(x) + y] for x in a for y in b]
|
13
ZoeYn OP |
14
raaaaaar 2021-04-23 09:49:37 +08:00
都是 O(n^2) 的,数据库连接操作就以这个为基础,如果能优化数据库早干了
|
15
liuxingdeyu 2021-04-23 10:02:37 +08:00
这。。。笛卡尔积无解,就得一个一个算,无非就是写法上优雅点,map 、reduce 、lambda 啥的
|
16
HashV2 2021-04-23 11:25:36 +08:00
itertools 库看一遍吧,方法不多 但是都很好用
|
17
sugarkeek 2021-04-23 12:45:41 +08:00
就算是库也是这么一个一个合并的
|
18
ZoeYn OP |