我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.
我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.
我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.
如果输入为零,我想创建一个如下所示的数组:
[1,0,0,0,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
如果输入为5:
[0,0,0,0,0,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
对于上面我写道:
np.put(np.zeros(10),5,1)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有什么方法可以在一行中实现吗?
我知道迭代一组大小为n的所有子集是一场性能噩梦,需要花费O(2 ^ n)时间.
如何迭代大小为k的所有子集(对于(0 <= k <= n))?这是一场表演噩梦吗?我知道有(n,k)= n!/ k!(n - k)!可能性.我知道如果k非常接近0或非常接近n,这是一个很小的数字.
在n和k方面,最糟糕的表现是什么?除了O(n!/ k!(n - k)!)之外,还有一种更简单的方式吗?这是渐近地小于O(n!)还是相同?