Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印出数组中元素的所有组合_Python_Ruby_Arrays_Numbers - Fatal编程技术网

Python 打印出数组中元素的所有组合

Python 打印出数组中元素的所有组合,python,ruby,arrays,numbers,Python,Ruby,Arrays,Numbers,假设你有以下几点 x = [[1,2,3], [4,5,6], [7,8,9]] 在python或ruby中,打印出所有内部元素组合的最佳方法是什么 因此,结果如下所示: 147, 148, 149, 157, 158, 159, 167, ... 这将导致一种更普遍的解决典型面试类型问题的方法,如“打印电话号码的所有字母组合”或“打印数字x的位图表” 无论如何,想法?我会用Ruby: 在python中: >>> x = [[1,2,3], [4,5,6], [7,8,9]

假设你有以下几点

x = [[1,2,3], [4,5,6], [7,8,9]]
在python或ruby中,打印出所有内部元素组合的最佳方法是什么

因此,结果如下所示:

147,
148,
149,
157,
158,
159,
167,
...
这将导致一种更普遍的解决典型面试类型问题的方法,如“打印电话号码的所有字母组合”或“打印数字x的位图表”

无论如何,想法?

我会用Ruby:

在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)]
或者,如果您想要ints:

>>> [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)])

在Python.Wow中使用,搜索后没有看到列表列表,猜测使用单词数组就足够了。最终结果是一个数字,我认为是OPwant@ArupRakshit添加了可选…或
x.shift.product(*x)…
@CarySwoveland,然后源数组将丢失数据。我知道这个答案是正确的,但是你需要提供更多的信息来解释它
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)])
x = [[1,2,3], [4,5,6], [7,8,9]]
x.shift.product(*x).map(&:join)