在Python中查找字符串中是否存在一组以字符串形式排列的字符的最有效方法是什么?
例如,如果我有string="hello world"和子字符串"roll",该函数将返回true,因为"roll"存在的所有4个字母"hello world".
有明显的暴力方法,但我想知道是否有一种有效的Python特定方法来实现这一点.
编辑:字母数很重要.所以例如rollll不包括在内hello world(只有三个).
我有一些带有一些字符的字符串,我正在寻找这些字符的组织,以便它是最可能的.
例如,如果我有字母"ascrlyo",那么有些安排会比其他安排更加明显.以下可能获得"高分":
可怕的
如果以下可能获得低分:
oascrly yrlcsoa
我可以使用一个简单的算法吗?或者更好的是,Python功能实现了这一目标?
谢谢!
首先 - 为模糊标题道歉,我找不到更好的标题.
我有以下结构的表(简化):
EmpID DeptID
1 1
1 2
2 1
3 2
4 5
5 2
Run Code Online (Sandbox Code Playgroud)
此表表示多对多关系.
我有兴趣找到与特定DeptID组相关的所有EmpID,例如我想要所有与DeptID 1,2和3相关的EmpID.请注意它是AND关系而不是OR关系.对于我的情况,EmpID可能与除1,2和3之外的其他DeptID相关,因为它是有效的答案.
我感兴趣的DeptID数量有所变化(即我可能想要与DeptID 3和5相关的EmpID,或者我可能想要与DepID 2,3,4,5,6,7相关的EmpID).
当我尝试解决这个问题时,我发现自己要么每个DepID创建一个JOIN,要么每个DeptID创建一个子查询.这意味着我必须根据我正在测试的DeptID数量生成一个新查询.我显然更喜欢使用参数或参数集进行静态查询.
我正在研究SQL Server和MySQL(并行开发两个版本的代码).
有任何想法吗?
我有一个人的生日的DateTime对象.我使用人的年,月和出生日创建此对象,方法如下:
DateTime date = new DateTime(year, month, day);
Run Code Online (Sandbox Code Playgroud)
我想知道在这个人下一个生日之前剩下多少天.在C#中这样做的最佳方法是什么(我是语言新手)?
我有一个数据库表,其中包含唯一的字符串字段和几个整数字段.字符串字段通常为10-100个字符长.
每分钟左右我都有以下场景:我收到一个与表的记录结构相对应的2-10万个元组的列表,例如
[("hello", 3, 4), ("cat", 5, 3), ...]
Run Code Online (Sandbox Code Playgroud)
我需要将所有这些元组插入到表中(假设我验证这些字符串都不会出现在数据库中).为了澄清,我正在使用InnoDB,并且我有一个自动增量主键用于此表,字符串不是PK.
我的代码当前遍历此列表,因为每个元组都会创建一个具有适当值的Python模块对象,并调用".save()",如下所示:
@transaction.commit_on_success
def save_data_elements(input_list):
for (s, i1, i2) in input_list:
entry = DataElement(string=s, number1=i1, number2=i2)
entry.save()
Run Code Online (Sandbox Code Playgroud)
此代码目前是我系统中的性能瓶颈之一,因此我正在寻找优化它的方法.
例如,我可以生成SQL代码,每个代码包含100个元组的INSERT命令(在SQL中"硬编码")并执行它,但我不知道它是否会改进任何东西.
您有什么建议来优化这样的过程吗?
谢谢
我正在构建一个接收源代码作为输入的应用程序,并分析代码的几个方面.它可以接受来自许多常用语言的代码,例如C/C++,C#,Java,Python,PHP,Pascal,SQL等(但是许多语言都不受支持,例如Ada,Cobol,Fortran).知道语言之后,我的应用程序知道该怎么做(我有不同语言的处理程序).
目前我要求用户输入编写代码的编程语言,这很容易出错:尽管用户知道编程语言,但由于鲁莽,他们中的一小部分(在极少数情况下)会点击错误的选项,这打破了系统(即我的分析失败).
在我看来,应该有一种方法可以从输入文本本身中找出(在大多数情况下)语言是什么.几点说明:
例子:
我的问题:
我正在用Python编写代码,但我认为这个问题与语言无关.
谢谢
我有一个循环,从外部源读取大量数据.该过程大约需要20秒,我想向用户显示进度.我不需要任何花哨的进度条,因此我选择在标签中绘制我的进度,该标签将显示"Step 1/1000",然后更改为"Step 2/1000"等.
我的代码看起来像这样:
// "count" is the number of steps in the loop,
// I receive it in previous code
String countLabel = "/"+count.ToString();
for (i = 0; i < count; i++)
{
... do analysis ...
labelProgress.Content = "Step "+i.ToString()+countLabel
}
Run Code Online (Sandbox Code Playgroud)
但是,在该分析期间,屏幕"卡住"并且进度未显示为前进.我从过去的C++中理解这种行为,我可能会有一个单独的线程,显示进度条从循环接收通知,或某种形式的重绘/刷新,或强制窗口/应用程序处理其消息队列.
在C#中使用它的正确方法是什么?我没有绑定标签,所以如果有一个简单的进度条弹出屏幕我可以使用而不是这个标签它也会很棒......
谢谢
我有一个二进制搜索循环,它在执行路径中被多次命中.
剖析器显示搜索的划分部分(找到给定搜索范围的高和低索引的中间索引)实际上是搜索中最昂贵的部分,大约为4.
(我认为)有效的二进制搜索找到确切的中间值并不重要,只是中间附近的值,在任何一个方向都没有偏差.
是否有一个有点笨拙的算法来mid = (low + high) / 2更快地替换某些东西?
编辑:语言是C#,但是等效的位操作在任何语言中都有效(尽管它可能没有性能优势),这就是我离开C#标签的原因.
我正在开发一个Web应用程序并考虑Django,Google App Engine和其他几个选项.我想知道如果我开发一个完整的Django应用程序(假设它在专用服务器上运行),然后想要将其迁移到Google App Engine,我会产生什么样的"惩罚".
我对Google的数据存储有一个基本的了解,所以请假设我将为我的"独立"Django应用程序而不是关系数据库选择基于列的数据库,这样架构可以保持大部分相同而且不会是主要的因子.
另外,请假设我的应用程序没有维护大量数据,因此不需要迁移数十GB.我主要对代码和软件架构的影响感兴趣.
谢谢
我有一个在Heroku中托管的PostgreSQL分析数据库,我想生成自定义报告.我一直在寻找并通过并发现只有太弱的工具(例如Heroku的DbInsights附加组件)或者设置和集成太复杂(例如Microsoft的Reporting Services).
我确信我不是唯一有这些要求的人,所以希望有一个工具,我可以开箱即用......
这是我的要求:
我宁愿拥有一个基于云的工具并避免安装服务器,但如果服务器安装很简单,那么我可以忍受它(特别是如果我有一个快速的方法通过AWS/Softlayer /等设置它).
在过去,我使用过Microsoft Reporting Services并且它完成了我想要的一切,但我知道将它连接到PostgreSQL很有挑战性,因为ODBC连接速度超慢,而其他选项只需要大量的工作和维护,我宁愿避免.
那么......对我的要求来说什么是正确的工具?