Questions tagged «python»

Python是一种多范式,动态类型的多用途编程语言。它旨在快速学习,理解和使用并强制使用干净统一的语法。请注意,Python 2自2020年1月1日起已不再受支持。不过,对于特定于版本的Python问题,请添加[python-2.7]或[python-3.x]标签。使用Python变体或库(例如Jython,PyPy,Pandas,Numpy)时,请将其包含在标签中。

10
如何在Python中创建特里
我对尝试和DAWG(直接非循环字图)感兴趣,并且已经阅读了很多有关它们的信息,但我不知道输出trie或DAWG文件应该是什么样。 特里应该是嵌套词典的对象吗?每个字母分为几个字母,依此类推? 如果存在100k或500k条目,对这样的词典执行的查找会很快吗? 如何实现由多个单词组成的单词块,用-空格或空格分隔? 如何将单词的前缀或后缀链接到结构的另一部分?(对于DAWG) 我想了解最佳的输出结构,以便弄清楚如何创建和使用一个结构。 我也希望DAWG和trie一起输出。 我不想看到带有彼此链接的气泡的图形表示,我想知道将一组单词转换为尝试或DAWG后的输出对象。
123 python  trie  dawg 

9
从Python调用Java
从python调用Java的最佳方法是什么?(jython和RPC对我来说不是一个选择)。 我听说过JCC:http : //pypi.python.org/pypi/JCC/1.9 一个用于从C ++ / Python调用Java的C ++代码生成器,但这需要编译所有可能的调用。我希望有另一个解决方案。 我听说过JPype:http : //jpype.sourceforge.net/ 教程:http : //www.slideshare.net/onyame/mixing-python-and-java import jpype jpype.startJVM(path to jvm.dll, "-ea") javaPackage = jpype.JPackage("JavaPackageName") javaClass = javaPackage.JavaClassName javaObject = javaClass() javaObject.JavaMethodName() jpype.shutdownJVM() 这看起来像我需要的。但是,最新版本是2009年1月,我看到人们无法编译JPype。 JPype是一个死项目吗? 还有其他选择吗? 问候,大卫
123 java  python 

8
有什么理由不使用'+'连接两个字符串吗?
Python中常见的反模式是+在循环中使用串联字符串序列。这很不好,因为Python解释器必须为每次迭代创建一个新的字符串对象,并且最终要花费二次时间。(在某些情况下,最新版本的CPython显然可以优化此功能,但其他实现则不能,因此建议程序员不要依赖此功能。)''.join是执行此操作的正确方法。 但是,我听说它说过(包括Stack Overflow上的内容),您永远都不要将它+用于字符串连接,而应该始终使用''.join或格式字符串。我不明白为什么只连接两个字符串会出现这种情况。如果我的理解是正确的,则不应该花费二次时间,而且我认为a + b比''.join((a, b))或更加简洁易读'%s%s' % (a, b)。 +串联两个字符串是否是一种好习惯?还是有我不知道的问题?

4
多处理中的共享内存对象
假设我有一个很大的内存numpy数组,我有一个函数func将这个巨型数组作为输入(以及其他一些参数)。func具有不同参数的参数可以并行运行。例如: def func(arr, param): # do stuff to arr, param # build array arr pool = Pool(processes = 6) results = [pool.apply_async(func, [arr, param]) for param in all_params] output = [res.get() for res in results] 如果我使用多处理库,那么该巨型数组将多次复制到不同的进程中。 有没有办法让不同的进程共享同一数组?该数组对象是只读的,永远不会被修改。 更复杂的是,如果arr不是数组,而是任意python对象,是否可以共享它? [编辑] 我读了答案,但仍然有些困惑。由于fork()是写时复制的,因此在python多处理库中生成新进程时,我们不应调用任何额外的开销。但是下面的代码表明存在巨大的开销: from multiprocessing import Pool, Manager import numpy as np; import …

10
如何逃避os.system()调用?
使用os.system()时,通常必须转义文件名和其他作为参数传递给命令的参数。我怎样才能做到这一点?最好是可以在多个操作系统/ shell上运行的东西,尤其是bash。 我目前正在执行以下操作,但是请确保为此必须有一个库函数,或者至少是一个更优雅/更强大/更有效的选项: def sh_escape(s): return s.replace("(","\\(").replace(")","\\)").replace(" ","\\ ") os.system("cat %s | grep something | sort > %s" % (sh_escape(in_filename), sh_escape(out_filename))) 编辑:我已经接受了使用引号的简单答案,不知道为什么我没有想到它;我猜是因为我来自Windows,“和”的行为略有不同。 关于安全性,我理解这个问题,但是在这种情况下,我对os.system()提供的一种快速简便的解决方案感兴趣,并且字符串的来源不是用户生成的,或者至少是由受信任的用户(我)。
123 python  shell  escaping 

13
sql查询中的python列表作为参数
我有一个python列表,说我 l = [1,5,8] 我想编写一个SQL查询来获取列表中所有元素的数据,例如 select name from students where id = |IN THE LIST l| 我该如何完成?
123 python  sql 

2
Conda和Anaconda有什么区别?
问题后更新: 有关更多详细信息,请参见《 Conda简介》。 问题: 当我尝试更新anaconda时,我首先在ubuntu上安装了Anaconda~/anaconda,根据Continuum Analytics 的文档,我应该使用以下命令: conda update conda conda update anaconda 然后我意识到我没有安装conda,因此我使用此处的文档进行了安装。 安装conda后,当我运行时conda update anaconda,出现以下错误: 错误:/ home / xiang / miniconda中未安装软件包“ anaconda” 似乎conda假定我的anaconda已安装,/home/xiang/miniconda但事实并非如此。 问题: conda和anaconda有什么区别? 如何告诉conda我的Anaconda安装在哪里?
123 python  anaconda  conda 


13
有Python缓存库吗?
我正在寻找Python缓存库,但到目前为止找不到任何东西。我需要一个简单dict的类似接口,可以在其中设置密钥及其有效期,并将其重新缓存。有点像: cache.get(myfunction, duration=300) 它将从缓存中为我提供该项目(如果存在),或者调用该函数并将其存储(如果它不存在或已过期)。有人知道这样吗?
123 python  caching 

9
Numpy argsort-它在做什么?
为什么numpy给出以下结果: x = numpy.array([1.48,1.41,0.0,0.1]) print x.argsort() >[2 3 1 0] 当我期望它能做到这一点时: [3 2 0 1] 显然,我对该功能缺乏了解。
123 python  numpy 



5
如何在Django中过滤用于计数注释的对象?
考虑简单的Django模型Event和Participant: class Event(models.Model): title = models.CharField(max_length=100) class Participant(models.Model): event = models.ForeignKey(Event, db_index=True) is_paid = models.BooleanField(default=False, db_index=True) 使用参与者总数来注释事件查询很容易: events = Event.objects.all().annotate(participants=models.Count('participant')) 如何用筛选的参与者计数进行注释is_paid=True? 我需要查询所有事件,而与参与者人数无关,例如,我不需要按带注释的结果进行过滤。如果有0参与者,那没关系,我只需要带有0注释的值即可。 文档中的示例在这里不起作用,因为它从查询中排除了对象,而不是使用注释了对象0。 更新。Django 1.8具有新的条件表达式功能,因此我们现在可以这样做: events = Event.objects.all().annotate(paid_participants=models.Sum( models.Case( models.When(participant__is_paid=True, then=1), default=0, output_field=models.IntegerField() ))) 更新 2。Django 2.0具有新的条件聚合功能,请参阅下面的可接受答案。

4
Matplotlib:在其他图形元素后面绘制网格线
在Matplotlib中,我按如下所示制作虚线网格: fig = pylab.figure() ax = fig.add_subplot(1,1,1) ax.yaxis.grid(color='gray', linestyle='dashed') 但是,我不知道如何(甚至可能)在其他图形元素(如条形图)后面绘制网格线。更改添加网格的顺序与添加其他元素的顺序没有区别。 是否有可能使网格线出现在其他所有内容的后面?
123 python  matplotlib  grid 

2
如何使用Pandas创建随机整数的DataFrame?
我知道如果我使用randn, import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD')) 给了我我想要的东西,但是带有正态分布的元素。但是,如果我只想要随机整数怎么办? randint通过提供范围来工作,但不能像提供数组那样randn工作。那么我该如何使用某个范围之间的随机整数呢?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.