在下面的方法定义,什么是*和**为做param2?
def foo(param1, *param2):
def bar(param1, **param2):
Run Code Online (Sandbox Code Playgroud) python syntax parameter-passing variadic-functions argument-unpacking
我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.
我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.
我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.
我自己写了一个实用程序来将列表分成给定大小的批次.我只是想知道是否已经有任何apache commons util.
public static <T> List<List<T>> getBatches(List<T> collection,int batchSize){
int i = 0;
List<List<T>> batches = new ArrayList<List<T>>();
while(i<collection.size()){
int nextInc = Math.min(collection.size()-i,batchSize);
List<T> batch = collection.subList(i,i+nextInc);
batches.add(batch);
i = i + nextInc;
}
return batches;
}
Run Code Online (Sandbox Code Playgroud)
如果已有相同的实用程序,请告诉我.
我有一个大文本文件,我想处理每一行(做一些操作)并将它们存储在数据库中.由于单个简单程序花费的时间太长,我希望它可以通过多个进程或线程来完成.每个线程/进程应从该单个文件中读取不同的数据(不同的行),并对其数据(行)执行一些操作并将它们放入数据库中,以便最终处理完所有数据并进行处理.数据库与我需要的数据一起转储.
但我无法弄清楚如何处理这个问题.
我正在寻找一种快速,干净,pythonic的方法来将列表划分为n个几乎相等的分区.
partition([1,2,3,4,5],5)->[[1],[2],[3],[4],[5]]
partition([1,2,3,4,5],2)->[[1,2],[3,4,5]] (or [[1,2,3],[4,5]])
partition([1,2,3,4,5],3)->[[1,2],[3,4],[5]] (there are other ways to slice this one too)
Run Code Online (Sandbox Code Playgroud)
这里有几个答案迭代列表切片非常接近我想要的,除了它们专注于列表的大小,我关心列表的数量(其中一些也填充无).显然,这些很容易转换,但我正在寻找最佳实践.
同样,人们在这里指出了很好的解决方案如何将列表拆分成大小均匀的块?对于一个非常类似的问题,但我对分区的数量比特定大小更感兴趣,只要它在1以内.再次,这是可以轻易转换的,但我正在寻找最佳实践.
我有一个字符串我想分成N个相等的部分.
例如,假设我有一个长度为128的字符串,我想将其分成4个长度为32的块; 即,前32个字符,然后是第二个32,依此类推.
我怎样才能做到这一点?
是否有一种简单的方法可以将列表分成Kotlin中的部分(可能是一些lambda)?
例如:
[1, 2, 3, 4, 5, 6] => [[1, 2], [3, 4], [5, 6]]
Run Code Online (Sandbox Code Playgroud) 我知道这个问题已被多次覆盖,但我的要求是不同的.
我有一个列表:range(1, 26).我想把这个列表分成一个固定的数字n.假设n = 6.
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
>>> l = [ x [i:i + 6] for i in range(0, len(x), 6) ]
>>> l
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25]]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我没有获得6个块(六个子列表包含原始列表的元素).如何以这样的方式划分列表,使得我得到n …
我需要创建一个函数,将列表拆分为列表列表,每个列表包含相同数量的项目(或尽可能相等).
例如
def split_lists(mainlist, splitcount):
....
mylist = [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
split_list(mylist,2)将返回两个包含三个元素的列表的列表 - [[1,2,3][4,5,6]].
split_list(mylist,3) 将返回包含两个元素的三个列表的列表.
split_list(mylist,4) 将返回两个元素列表和两个元素列表的列表.
我不关心哪个元素出现在哪个列表中,只是列表尽可能均匀地划分.
我想在matplotlib的线图上绘制标签.
#!/usr/bin/env python
import numpy as np
import seaborn as sns
sns.set_style("whitegrid")
sns.set_palette(sns.color_palette("Greens", 8))
from scipy.ndimage.filters import gaussian_filter1d
for i in range(8):
# Create data
y = np.roll(np.cumsum(np.random.randn(1000, 1)),
np.random.randint(0, 1000))
y = gaussian_filter1d(y, 10)
sns.plt.plot(y, label=str(i))
sns.plt.legend()
sns.plt.show()
Run Code Online (Sandbox Code Playgroud)
生成
相反,我更喜欢像
我似乎无法绕过多处理.我试图做一些基本的操作,但多处理脚本似乎需要永远.
import multiprocessing, time, psycopg2
class Consumer(multiprocessing.Process):
def __init__(self, task_queue, result_queue):
multiprocessing.Process.__init__(self)
self.task_queue = task_queue
self.result_queue = result_queue
def run(self):
proc_name = self.name
while True:
next_task = self.task_queue.get()
if next_task is None:
print ('Tasks Complete')
self.task_queue.task_done()
break
answer = next_task()
self.task_queue.task_done()
self.result_queue.put(answer)
return
class Task(object):
def __init__(self, a):
self.a = a
def __call__(self):
#Some more work will go in here but for now just return the value
return self.a
def __str__(self):
return 'ARC'
def run(self):
print ('IN')
if __name__ == …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个可以将列表分成更小的列表的代码,如下所示,我有一个列表和一个类似的值:
nb_classes = [1, 2, 3, 4, 5, 6, 7, 8, 9]
N = 3
Run Code Online (Sandbox Code Playgroud)
我想获得更小的N列表,具体取决于 的长度nb_classes和 的值N。
例如,如果 的值为N3,我想要 3 个这样的小列表:
nb_classes = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list_1 = [1,2,3]
list_2 = [4,5,6]
list_3 = [7,8,9]
Run Code Online (Sandbox Code Playgroud)
第二个例子:
nb_classes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_1 = [1,2,3,4]
list_2 = [5,6,7]
list_3 = [8,9,10]
Run Code Online (Sandbox Code Playgroud)
第三个例子:
nb_classes = [1, 2, 3, 4, 5, …Run Code Online (Sandbox Code Playgroud)