小编PhD*_*PhD的帖子

为什么将列表转换为集合比仅使用列表计算列表差异更快?

说,我想计算两个列表的区别C = A - B:

A = [1,2,3,4,5,6,7,8,9] 
B = [1,3,5,8,9]
C = [2,4,6,7]          #Result
Run Code Online (Sandbox Code Playgroud)

A并且B都使用唯一的整数排序(不确定是否有办法告诉Python有关列表的此属性).我需要保留元素的顺序.AFAIK有两种可行的方法

方法1:将B转换为集合并使用列表解析来生成C:

s = set(B)
C = [x for x in A if x not in s]
Run Code Online (Sandbox Code Playgroud)

方法2:直接使用列表理解:

C = [x for x in A if x not in B]
Run Code Online (Sandbox Code Playgroud)

为什么#1效率更高#2?是否有转换为集合的开销?我在这里错过了什么?

本答案给出了一些性能基准.

更新:我知道一个集合的平均O(1)查找时间比一个列表的查询时间快,O(n)但如果原始列表A包含大约一百万左右的整数,那么集合创建实际上不会花费更长时间吗?

python performance list set python-2.7

9
推荐指数
3
解决办法
5480
查看次数

如何使用Python更新.yml文件,忽略已有的Jinja语法?

我有一些预处理与一些现有的.yml文件 - 但是,其中一些嵌入了Jinja模板语法:

A:
 B:
 - ip: 1.2.3.4
 - myArray:
   - {{ jinja.variable }}
   - val1
   - val2
Run Code Online (Sandbox Code Playgroud)

我想在这个文件中读取,并添加val3myArray这样:

A:
 B:
 - ip: 1.2.3.4
 - myArray:
   - {{ jinja.variable }}
   - val1
   - val2
   - val 3
Run Code Online (Sandbox Code Playgroud)

我试着手动写出jinja模板,但是他们用单引号写了: '{{ jinja.variable }}'

对于我来说,阅读这些.yml文件并修改它们的推荐方法是什么,尽管有预先存在的Jinja语法?我想向这些文件添加信息,保持其他所有相同.

我在Python 2.7+上使用PyYAML尝试了上述内容

python yaml jinja2 python-2.7

9
推荐指数
2
解决办法
1170
查看次数

Eclipse + Glassfish v3中没有web.xml?

我在Eclipse(helios)+ Glassfish v3中创建了一个简单的"hello world"servlet.我正在使用Glassfish的eclipse插件似乎没有web.xml,而是WEB-INF /文件夹中的sun-web.xml.这是我第一次使用glassfish但是对于没有web.xml感到有些惊讶 - 所以这里有一些问题:

  1. 我在哪里检查servlet的url-mappings?在Eclipse中创建一个新的Servlet时,它要求我进行URL映射,但是我无法在任何.xml文件中找到它,我可以在其中调整设置.
  2. 如果没有任何web.xml,从头开始创建它将非常容易出错.你有什么建议?谷歌的样品和游戏?不应该自动创建一个?
  3. 有没有遇到过这个?我试着查找web.xml和sun-web.xml之间的区别,但结果并不是很有启发性.我不想为配置目的学习另一个xml,也不想学习glassfish.

我们必须配置servlet上下文,映射等,尤其是在开发/测试期间,但是我完全没有使用web.xml.

eclipse deployment glassfish deployment-descriptor

8
推荐指数
2
解决办法
2万
查看次数

是不是在实践中使用了heapsort?

Quicksort在实践中胜过Heapsort.Mergesort是3个中唯一稳定的(在普通的香草实现中).因此,它可以根据手头的情况(在内存中的就地或外部排序等)使用快速排序或合并排序.

那么有没有一种情况,堆数据结构确实用于排序?无论我有多么"谷歌"或尝试提出应用程序,几乎总是选择合并/快速排序.我从来没有遇到过在我的职业生涯中实际使用堆排序的情况.出于好奇心,在实践中(如果有的话)heapsort实际上是一个很好的用例?

sorting performance heapsort

8
推荐指数
1
解决办法
468
查看次数

(如何)你能咖喱组合一元函数吗?

我有以下功能:

f: a -> m[b]
g: (b,c) -> m[d]
h: (a,c) -> m[d]
Run Code Online (Sandbox Code Playgroud)

怎样才能h被表示为一个组成fg

使用do/for符号,我们可以h像这样轻松实现:

h: (a,c) => {
 for {
  b <- f(a)
  d <- g(b,c)
 } yield (d)
}
Run Code Online (Sandbox Code Playgroud)

但是,我很好奇我们是否可以这样表达:h = f andThen gwhereandThen像一元组合运算符一样使用。例如:

f: a -> m[b]
g: b -> m[c]
h: a -> m[c] = f andThen g
Run Code Online (Sandbox Code Playgroud)

我假设andThen在像 Haskell(例如 Kliesli >=>)这样的语言中创建这样的函数是可能的。在 Scala 中,我们可以这样写:(Scala 命名中的示例,andThenE因为 …

monads haskell scala currying function-composition

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

用于将维基文本转换为HTML的Jquery/Javascript解决方案,反之亦然?

对于我的Web前端,我必须在我的系统中实现wiki语法的子集.我是否需要手动指定规则并重新发明轮子?是否有一个现有的javascript库或jquery插件可以帮助它?

例如,用户输入== Header ==因为这需要转换为媒体标题,例如(假设媒体在此上下文中定义为如下所示的范围)

<span class="mediumHeader" id = "Header">Header</span>
Run Code Online (Sandbox Code Playgroud)

现在,当用户编辑上述文本时,我猜它将涉及替换

<span...> ... </span>==...==

现在,对于我设计的每个系统,这将按照"我的规则"进行,并且几乎总是必须重新发明轮子.有什么东西可以用来使用Jquery/Javascript来简化这个wiki与HTML转换之间的连接吗?我确定这是一个已知解决方案的问题.

我更愿意定制什么是可接受的,什么不是,即我不会将所有内容翻译成维基语法(或HTML)的唯一子集.我应该自己动手申请吗?

html javascript jquery wiki translation

7
推荐指数
2
解决办法
2902
查看次数

这个javascript代码如何/为什么打印'有趣'?

alert(
    (![]+[])[[]-[]]+
    (([]+[])+([][[]]))[[]-[]]+
    (([]+[])+([][[]]))[!![]-[]]
);
Run Code Online (Sandbox Code Playgroud)

继承人的小提琴:http://jsfiddle.net/leeny/6VugZ/

这段神秘的代码究竟是如何工作的?

javascript

7
推荐指数
1
解决办法
442
查看次数

OOAD是OOP的功能编程的等价物是什么?

我最近进入函数式编程(FP)的世界,我想知道如何为中等大小的应用程序"思考功能"?特别是FP的分析和设计.

通过OOP,我们受过训练,可以根据对象,属性和关系进行思考.我们使用类和序列图对我们的分析/设计进行建模.但是,在设计FP时,相同的模型似乎不合适.函数式编程的等效建模范例是什么?看起来DFD可能很合适,但我可能错了.

例如:我正在考虑设计一个使用Haskell的棋盘游戏Monopoly的模拟,只是为了学习语言.在进行OOAD时,你会想到board包含items附加属性/方法的类.您player可以在类图中捕获各种其他对象及其关联关系.以及它们在序列图中的相互作用.但是,这些建模范例似乎并不适用于功能程序.那么只是"如何"在功能上建模?

注意:我正在寻找可以解释如何分析和设计功能程序的具体参考/示例,因为我来自面向对象的思维/建模方式.

oop haskell ooad functional-programming

7
推荐指数
1
解决办法
847
查看次数

Zend_Registry:现实生活中的例子

你觉得Zend_Registry有用吗?

它应该用于哪些任务?不是吗?

变量的全局状态不是一个好习惯.主要对象可以通过注入全局状态$front->setParam('paramName', $object),那么Zend_Registry的目的是什么?

php zend-framework global-variables

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

为什么在整数除法中使用应用函子不如 monad?

我正在阅读 Graham Hutton 的 Haskell 编程,并对下面概述的思路感到困惑。

他使用下面的示例通过展示应用函子在除法运算中的缺点来激发 monad 的使用,其中返回类型是 aMaybe来处理指示潜在除以零场景的错误情况。

鉴于:

data Expr = Val Int | Div Expr Expr

safediv :: Int -> Int -> Maybe Int
safediv _ 0 = Nothing
safediv n m = Just (n `div` m)

eval :: Expr -> Maybe Int
eval (Val n) = pure n                               --type: Just(n)?
eval (Div x y) = pure safediv <*> eval x <*> eval y --type: Maybe(Maybe Int)?
Run Code Online (Sandbox Code Playgroud)

他继续解释:

但是,此定义类型不正确。特别是,该函数safediv具有 type …

haskell functional-programming

6
推荐指数
1
解决办法
113
查看次数