37,719
社区成员
发帖
与我相关
我的任务
分享
def zMakeTable(*args):
m = [[x] for x in args[0]]
for i, v in enumerate(args[1:]):
tmp = []
for x in m:
for y in v:
x.append(y)
tmp.append([n for n in x])
del x[-1:]
m = [z for z in tmp]
return m
if __name__ == '__main__':
print(zMakeTable([1, 2], [3, 4], [5, 6], [7, 8]))
# [[1, 3, 5, 7], [1, 3, 5, 8], [1, 3, 6, 7], [1, 3, 6, 8],
# [1, 4, 5, 7], [1, 4, 5, 8], [1, 4, 6, 7], [1, 4, 6, 8],
# [2, 3, 5, 7], [2, 3, 5, 8], [2, 3, 6, 7], [2, 3, 6, 8],
# [2, 4, 5, 7], [2, 4, 5, 8], [2, 4, 6, 7], [2, 4, 6, 8]]
In [44]: from itertools import product
In [45]: def f(*arg):
...: return product(*arg)
In [46]: product('ab', 'cd', 'efg')
Out[46]: <itertools.product at 0x3529190>
In [47]: list(_)
Out[47]:
[('a', 'c', 'e'),
('a', 'c', 'f'),
('a', 'c', 'g'),
('a', 'd', 'e'),
('a', 'd', 'f'),
('a', 'd', 'g'),
('b', 'c', 'e'),
('b', 'c', 'f'),
('b', 'c', 'g'),
('b', 'd', 'e'),
('b', 'd', 'f'),
('b', 'd', 'g')]
In [48]: list(f('ab', 'cd'))
Out[48]: [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
In [49]: list(f('ab', 'cd', 'efg'))
Out[49]:
[('a', 'c', 'e'),
('a', 'c', 'f'),
('a', 'c', 'g'),
('a', 'd', 'e'),
('a', 'd', 'f'),
('a', 'd', 'g'),
('b', 'c', 'e'),
('b', 'c', 'f'),
('b', 'c', 'g'),
('b', 'd', 'e'),
('b', 'd', 'f'),
('b', 'd', 'g')]
这个是自己写的:
In [50]: def myProduct(*arg):
...: if len(arg) == 0:
...: yield []
...: else:
...: for prefix in myProduct(*arg[:-1]):
...: for item in arg[-1]:
...: yield prefix + [item]
...:
In [51]: list(myProduct('ab'))
Out[51]: [['a'], ['b']]
In [52]: list(myProduct('ab', 'cd', 'e'))
Out[52]: [['a', 'c', 'e'], ['a', 'd', 'e'], ['b', 'c', 'e'], ['b', 'd', 'e']]