小编Wil*_*uck的帖子

python中许多正则表达式的速度

我正在编写一个处理大量字符串/文件的python程序.我的问题是,我将会收到一段相当短的文本,我将需要搜索相当广泛的单词/短语的实例.

我想我需要编译正则表达式作为在文本中匹配这些单词/短语的方法.但是,我担心的是,这需要花费很多时间.

我的问题是,重复编译正则表达式,然后搜索一小段文本来查找匹配的过程有多快?使用一些字符串方法会更好吗?

编辑:所以,我想我的问题的一个例子是:使用一个正则表达式进行编译和搜索的成本是多少,而不是说,在字符串中迭代"if"字,说5次?

python regex performance

4
推荐指数
3
解决办法
1万
查看次数

使用默认值python设置字典的缺失值

我有一个defaultdict(列表)和其他普通字典

A = {1:["blah", "nire"], 2:["fooblah"], 3:["blahblah"]}
B = {1: "something" ,2:"somethingsomething"}
Run Code Online (Sandbox Code Playgroud)

现在让我说我有这样的事情

missing_value = "fill_this"
Run Code Online (Sandbox Code Playgroud)

现在,首先我想找到A中缺少B的键(如缺少3个),然后将这些键设置为值missing_value?什么是pythonic方法呢?谢谢

python

4
推荐指数
1
解决办法
3494
查看次数

从Python或R中获取大数据集的高度相关对的有效方法

我有一个大型数据集(假设有10,000个变量,每个变量大约有1000个元素),我们可以把它想象成2D列表,类似于:

[[variable_1],
 [variable_2],
 ............
 [variable_n]
]
Run Code Online (Sandbox Code Playgroud)

我想从该数据中提取高度相关的变量对.我希望"高度相关"成为我可以选择的参数.

我不需要提取所有对,我不一定需要最相关的对.只要有一种有效的方法让我高度相关,我很高兴.

此外,如果变量不会出现在多个对中,那将会很好.虽然这可能不是至关重要的.

当然,有一种蛮力的方式来寻找这样的对,但对我来说它太慢了.

我已经google了一下,发现了一些关于这个问题的理论工作,但我找不到能够做到我想要的东西的包.我主要在python中工作,所以python中的一个包最有帮助,但是如果R中有一个包来做我正在寻找的东西,它会很棒.

有没有人知道在Python或R中执行上述操作的包?还是其他任何想法?

先感谢您

python algorithm r

4
推荐指数
2
解决办法
4760
查看次数

R:阿尔法!他们什么都不做!

但是说真的,我正在使用ggplot2而且我相信我已经尝试alpha = .5在每个可以想象的地方坚持一个没有任何效果.

我想为此图中的点添加透明度,因为它们完全覆盖了箱图

g <- ggplot(data=ar1yX_wnZ, aes(factor(avp), lambda))
g <- g + geom_boxplot() + geom_jitter(aes(color=rho))     
g + facet_grid(~ tau) 
Run Code Online (Sandbox Code Playgroud)

我想坚持alpha = .5在geom_jitter会工作:

g <- ggplot(data=ar1yX_wnZ, aes(factor(avp), lambda))
g <- g + geom_boxplot() + geom_jitter(aes(color=rho), alpha = .5)     
g + facet_grid(~ tau) 
Run Code Online (Sandbox Code Playgroud)

但是它没有做任何事情,也没有aes()把它包装在或调用ggplot()或者ggplot(aes()).话虽这么说,并不是图表没有出现,或者产生错误,只是点数没有透明度.

这似乎是每个人都这样做的方式,所以我想知道是否有一些我缺少的R包.任何建议将不胜感激.作为一个注释,我使用R版本2.7,并已安装ggp​​lot2与install.packages("ggplot2",dep = T)所以我会想到一切都在那里...

编辑:

有关更多信息/可重现的示例,这个非常简单的情况也不起作用:

a = rnorm(10000, 0, 1)
b = rnorm(10000, 0, 1)
test = as.data.frame(cbind(a,b))
g <-ggplot(data = test, aes(a, b))
g …
Run Code Online (Sandbox Code Playgroud)

alpha r ggplot2

3
推荐指数
1
解决办法
933
查看次数

需要帮助更快地进行排列

这是我的工作代码,我试图找到方法使其更快地找到有效的单词,我正在考虑为每个单词制作单独的字典列表,你会怎么想?

import random
import itertools

file_name='words.txt'

def load_words():
    try:
        f=open(file_name,'r')
        str1=f.read()
        f.close()
    except:
        print('Problem opening the file',file_name)
    list1=[]
    list1=str1.split()
    return(list1)

def is_valid(str1,list1):
    valid=False
    if str1 in list1:
        valid=True
    return valid

def generate(words,letters):
    answers=[]
    for length in range(2,len(letters)+1):
        for x in itertools.permutations(letters,length):
            word=''
            for let in x:
                word+=let
            if is_valid(word.upper(),words):
                answers.append(word)
                print(word)
    print(answers)

def main():
    words=load_words()
    letters = input('Enter your letters')
    answers = generate(words,letters)

main()
Run Code Online (Sandbox Code Playgroud)

python permutation

3
推荐指数
2
解决办法
320
查看次数

[Int]的总和导致溢出

我有一个返回的函数,[Int]我想取列表的总和.但是,虽然每个单独的元素都小于maxBound::Int,但总和肯定更大.

一个(人为的)例子:

ghci> sum ([1..10000000] :: [Int])
-2004260032
Run Code Online (Sandbox Code Playgroud)

有没有办法强迫总和积累成一个Integer而不是一个Int?我在想这个错吗?

haskell

3
推荐指数
1
解决办法
189
查看次数

可以用单引号括起SQL语句中的所有值吗?

是否可以用SQL引用SQL语句中的所有值?例如:

这是一本名为books的简单表:

id  |  title
1   |  Some book name
2   |  Second book name
Run Code Online (Sandbox Code Playgroud)

写这样的语句是否可以:

SELECT * FROM books WHERE id = '1'
Run Code Online (Sandbox Code Playgroud)

我已经在SQL Server 2008和MySQL 5中测试了该查询并且它运行良好,但我很好奇是否有任何性能问题,因为ID字段是acctualy整数.

第二个问题是写这样的声明是可以的:

SELECT * FROM books WHERE id = N'1'
Run Code Online (Sandbox Code Playgroud)

在SQL Server中使用N前缀用于UTF-8字段,但我已经在SQL服务器和MySQL中测试了它,两者都运行正常.我不知道SQLite是否支持N前缀,因为我没有测试过.

我之所以这样问是因为我正在构建可与流行的SQL数据库(SQL Server,MySQL,SQLite和MS Access)一起使用的数据库类,所以在执行选择,插入或更新数据时我不必担心关于字段数据类型.我总是可以用N'Some值附加值,但我很好奇这是否正确并且是否有任何性能问题?

mysql sql t-sql database sql-server

3
推荐指数
1
解决办法
1692
查看次数

C# Lambda 表达式的 SQL [IN] 语句等效项是什么?

我就在这种情况下。我有两个不同对象类型的列表,它们都有一个共享的属性值。假设是这样invoiceID。

在 SQL 中,如果我想获取所有记录,table_A因为它的列invoiceID值与任何invoiceIdinside匹配table_B,我可能会这样做。

Select *
From table_A
where invoiceID in ( select invoiceId from table_B)
Run Code Online (Sandbox Code Playgroud)

对于这种情况,C# 中等效的 LINQ 或 Lambda 表达式是什么?

我习惯于使用单个值搜索列表中的元素,例如:

var result = list_A.Where(x=>x.InvoiceID = someInvoiceID) 
Run Code Online (Sandbox Code Playgroud)

或者.contains()相反。

然而,这只能涵盖单个invoiceID值。

invoiceID我想,我可以为每个运行循环list_B,然后将结果存储在另一个列表中,但我只是想知道是否有更好的方法来做到这一点?

c# lambda

3
推荐指数
1
解决办法
7023
查看次数

我想引起一个ImportError

我正试图在我正在编写的一些代码中达到100%的测试覆盖率.但是,下面的代码块给了我麻烦.

try:
    from south.modelsinspector import add_introspection_rules
    add_introspection_rules([], ["^localized_recurrence\.duration_field\.DurationField"])
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

上面的代码是我测试模块的一部分.我需要在ImportError分支后面创建一个测试(不修改上面的代码).

我怎样才能以编程方式导致ImportError发生,而只在我的测试中编写代码?

python unit-testing

3
推荐指数
1
解决办法
161
查看次数

具有更高kinded类型的类型类约束

我正在尝试Eq为一个新类型编写一个实例EitherT:

newtype EitherT e m a = EitherT { runEitherT :: m (Either e a) }
Run Code Online (Sandbox Code Playgroud)

我假设以下Eq实例可行:

instance (Eq e, Eq a, Eq m) => Eq (EitherT e m a) where
  a == b = (runEitherT a) == (runEitherT b)
Run Code Online (Sandbox Code Playgroud)

但是,我看到一个错误:

Expected kind '* -> *', but 'm' has kind '*'
Run Code Online (Sandbox Code Playgroud)

我从那个错误中读到的是,我的类型类约束( ... Eq m) => ...让编译器误以为我认为m是善意的*,当我的newtype声明EitherT期望它是善良的时候* -> *.

我想知道我需要做什么,声明我想要一个Eq更高的kinded类型的实例m来实现 …

haskell

3
推荐指数
1
解决办法
298
查看次数