(17个答案)八年前就关门了。假设您有以下内容
x = [[1,2,3], [4,5,6], [7,8,9]]
在python或ruby中,打印出内部元素的所有组合的最佳方式是什么?所以结果看起来像这样:
147, 148, 149, 157, 158, 159, 167, ...
这将导致一个更通用的方法来解决典型的面试类型的问题,如"打印一个电话号码的所有字母组合"或"打印数字x的位图"不管怎样,你有什么想法?
iibxawm41#
我会在 Ruby:
x = [[1,2,3], [4,5,6], [7,8,9]] x.first.product(*x[1..-1]).map{ |ary| ary.join.to_i } # => [147, # 148, # 149, # 157, # 158, # 159, # 167, # 168, # 169, # 247, # 248, # 249, # 257, # 258, # 259, # 267, # 268, # 269, # 347, # 348, # 349, # 357, # 358, # 359, # 367, # 368, # 369]
ldfqzlk82#
在python中:
>>> x = [[1,2,3], [4,5,6], [7,8,9]] >>> import itertools as it >>> [x for x in it.product (*x) ] [(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 6, 7), (1, 6, 8), (1, 6, 9), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 6, 7), (2, 6, 8), (2, 6, 9), (3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 6, 7), (3, 6, 8), (3, 6, 9)]
或者,如果您需要整型:
>>> [int(''.join(str(x) for x in x)) for x in it.product(*x)] [147, 148, 149, 157, 158, 159, 167, 168, 169, 247, 248, 249, 257, 258, 259, 267, 268, 269, 347, 348, 349, 357, 358, 359, 367, 368, 369]
或不使用字符串操作:
def makeNumber(t): sum (10 ** i * e for i, e in enumerate(t[::-1])) x = [[1,2,3], [4,5,6], [7,8,9]] print([makeNumber(x) for x in it.product(*x)])
cgh8pdjw3#
x = [[1,2,3], [4,5,6], [7,8,9]] x.shift.product(*x).map(&:join)
3条答案
按热度按时间iibxawm41#
我会在 Ruby:
ldfqzlk82#
在python中:
或者,如果您需要整型:
或不使用字符串操作:
cgh8pdjw3#