我刚发现该指令产生大小为n的二进制数元组:itertools.product(* [(0,1)] * N)
itertools.product(*[(0, 1)] * n)
张贴由PAG。
有人可以解释它是如何工作的?
- 我正在试图找到一种方法来做没有重复的3个包中的n个元组的排列 我只能使用itertools,如果我想。由于
回答
[(0, 1)]
是数字0
和1
的一个元组的列表。
[(0, 1)] * n
复制的元组名单内,所以我们得到
[(0, 1), (0, 1), ..., (0, 1), (0, 1)]
那么,如果我们看一下itertools.product
功能,我们希望在每个元组的那些单参数的传递。因此,我们使用*
-operator将我们的列表解包到itertools.product
函数的参数中。所以,我们的功能等同于:
itertools.product((0, 1), (0, 1), ..., (0, 1), (0, 1))
其计算n
0
S和1
S的所有排列。
注意itertools.product
需要repeat
参数,它应该被用来做这样的事情:
itertools.product((0, 1), repeat=n)
要做到排列,您可以使用itertools.permutations
功能:
def pick_into_three_bags(n):
return itertools.permutations(range(n), 3)
请注意重复参数,使此代码无用 – jamylak 2013-05-02 04:16:11
@jamylak感谢您的提示,编辑。 – Xymostech 2013-05-02 04:19:54
感谢,但我不能有重复的排列。 – user1347096 2013-05-02 04:26:36
- 1. 生成大小为N的二进制对象,其中N由用户指定
- 2. 大小为n的数组,其中一个元素n/2次
- 3. 随机从大小为n的数组
- 4. 获取大小为n的所有二进制组合,但只有k 1s
- 5. 一个N×M阵列或M个大小为N的数组?
- 6. 生成长度为n,等于1和0的二进制数
- 7. 如何用数组表示二进制和n元满树?
- 8. N位数字的二进制数字
- 9. 从用户输入n创建一个大小为n的数组n
- 10. 使用递归打印所有大小为n的二进制数
- 11. 在大小为N的数组的每k个元素中查找最小元素和第二小元素
- 12. Java - 如何使用随机整数生成二维数组,其网格大小为N * N(用户输入)?
- 13. 上的N×N大小板
- 14. Prolog - 将二进制函数转换为n进制函数
- 15. 生成n位的所有字符串,考虑A [0..n-1]是大小为n的数组
- 16. 生成'n'位的所有字符串。假设A [0 ... .n-1]是大小为n的数组
- 17. SQLAlchemy转换为二进制(N)
- 18. 序言:列表(大小为N×N)
- 19. 在clojure中生成n位数的二进制数
- 20. 生成n×n的数组中numpy的
- 21. 为什么O(N日志N)构建二进制搜索树?
- 22. 数组大小为n的形式为k = 2^n的键的查找表
- 23. C++宏,扩大n为进1,2,3,...,N
- 24. 划分n位二进制整数
- 25. JS /节点:一个函数,其数值为N并返回值为[0,1,... N-1]的数组
- 26. 找到所有常见的N大小的元组的元组
- 27. 以最快的方式生成所有n位二进制数
- 28. 如何检查数组<object,N>的大小,N为自然数?
- 29. 大于n数组
- 30. 从n个组中查找所有组合的大小n
'zip(* [iter(seq)] * 3)'例如以3为一组分割一个序列,这是一个恰当的用例。 'product'接受一个'repeat'参数,使得这个代码无用。 – jamylak 2013-05-02 04:15:13