小编Li *_*oyi的帖子

通过python中的一些任意函数优雅地将列表(或字典)拆分为两个

是否有任何优雅的方法将列表/字典拆分为python中的两个列表/ dicts,接受一些任意的拆分函数?

我可以很容易地有两个列表推导,或两个选择,但在我看来应该有一些更好的方法来避免迭代每个元素两次.

我可以使用for循环和if语句轻松完成,但这需要7行代码,这应该是一个非常简单的操作.

有任何想法吗?

编辑:

仅供参考,我的两个解决方案是,

# given dict cows, mapping cow names to weight
# fast solution
fatcows = {}
thincows = {}
for name, weight in cows:
    if weight < 100:
        thincows[name] = weight
    else:
        fatcows[name] = weight

# double-list-comprehension solution would be
fatcows = {name: weight for name, weight in cows.items() if weight > 100}
thincows = {name: weight for name, weight in cows.items() if weight < 100}
Run Code Online (Sandbox Code Playgroud)

我当时认为必须有一些我从未想过的比这更优雅的东西,例如:

thincows, fatcows = ??? short expression involving …
Run Code Online (Sandbox Code Playgroud)

python select dictionary list-comprehension

10
推荐指数
3
解决办法
265
查看次数

HTML中是否有NO-OP标记?

我正在寻找一个标签,我可以用来标记html中的位置,然后我可以使用JQuery找到它.但是,我需要标记尽可能无用:即使是空的div和spans也会导致布局根据您设置的CSS规则而改变.就此而言,甚至html不理解的垃圾标签似乎从css中获取样式,我认为没有办法通过DOM遍历找到评论?

此标记将用于标记要进行Ajax的一大块HTML的开始和结束.我不想将整个块包装在div或span中(我现在正在做什么),因为这会影响CSS级联的方式,并且我希望将html标记为一个块来完全对程序员(我)透明.

有任何想法吗?

编辑:我只想到使用空脚本标签.那些应该是完全惰性和不可见的.我会调查一下

编辑:我怎么能忘记显示:无?愚蠢的愚蠢

html javascript jquery

10
推荐指数
1
解决办法
3111
查看次数

Python:重载元组多任务功能?

所以我创建了自己的基于dict的命名元组类:

class t(dict):
   def __getattr__(self, v):
      try:
         return self[v]
      except KeyError:
         raise AttributeError("Key " + str(v) + " does not exist.")
   def __init__(self, *args, **kwargs):
      for source in args:
         for i, j in source.items():
            self[i] = j
      for i, j in kwargs.items():
         self[i] = j

>>> thing = t(cow=10, moo='moooooooo')
>>> thing.cow
10
>>> thing.moo
'moooooooo'
Run Code Online (Sandbox Code Playgroud)

使用dict的意义在于我可以使用**splat运算符,以及整个事情可以作为dict的json'd.init中的double for循环是这样的,我可以在反序列化后立即从dict重新构造它.

我唯一缺少的是你可以用元组做的多任务,比如

>>> thing = (1, 3, ('blargh', 'mooo'))
>>> a, b, (c, d) = thing
>>> a
1
>>> b
3
>>> …
Run Code Online (Sandbox Code Playgroud)

python tuples

9
推荐指数
1
解决办法
771
查看次数

为什么F#列表没有尾指针

或者用另一种方式说,如果只有一个头指针,你会得到一个基本的,单链接的列表会带来什么样的好处?我能看到的尾指针的好处是:

  • O(1)列表连接
  • O(1)将内容添加到列表的右侧

与O(n)列表连接(其中n是左侧列表的长度?)相比,这两者都是相当方便的东西.丢弃尾指针有哪些优点?

f# linked-list

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

与flatmap相反的功能?

您知道flatmap如何获取一系列项目并将每个项目转换为新的子序列,聚合所有子序列:

[A, B, C] -> [A1, A2, B1, B2, B3, C1]
Run Code Online (Sandbox Code Playgroud)

变换的名称是否相反?就像是:

[A1, A2, B1, B2, B3, C1] -> [A, B, C]
Run Code Online (Sandbox Code Playgroud)

让我思考这个问题的具体例子就是对数学表达式进行评估:

   1 * 2 + 3 * 4 + 5 + 6 * 7 * 8 
-> 2 + 12 + 5 + 6 + 336 
-> 361
Run Code Online (Sandbox Code Playgroud)

单独地,评估6 * 7 * 8似乎是一个经典reduce步骤,而决定需要减少哪些块需要重复takeWhile步骤.

我知道如何以经典的迭代方式做到这一点,跟踪索引和所有这些.对于大多数情况,我发现大多数迭代模式都有一个很好的功能替代品.是否存在执行此操作的单个操作的名称,或者可以组合以创建此效果的一组简单操作?

functional-programming

9
推荐指数
1
解决办法
1487
查看次数

如何将自定义IntelliJ语言注入添加到scala字符串插值?

在IntelliJ中使用Scala,你已经可以做到了

var c = s"some ${compound * expression}"
Run Code Online (Sandbox Code Playgroud)

并有适当的语法突出显示${compound * expression}.Scala允许您定义自定义字符串插值器,以执行其他操作

var c = javascript"var x = [1, 2, 3]"
Run Code Online (Sandbox Code Playgroud)

有谁知道如何摆弄自定义语言注入功能,以很好地突出这些自定义字符串插值器?我已经把文件 - >设置 - >语言注入下的东西弄乱了,但它看起来真的很混乱,我找不到任何现有的进行神奇字符串插值语法的注入.据推测,一个是硬编码的(因为它也有很好的代码导航功能),但我希望有一些方法可以让它识别出漂亮的something"..."语法,并为我很好地突出它.

string scala syntax-highlighting intellij-idea

9
推荐指数
1
解决办法
590
查看次数

在SBT中定义子项目之间的插件依赖关系?

编辑:

自从我提出赏金后,我想我应该重申一下这个问题

一个SBT项目怎么能P有两个子项目,A并且B设置了B一个插件依赖A,这是一个SBT插件?

  • 赋予P插件依赖性A不起作用,因为A依赖于其他内容P,这导致循环依赖图
  • 它必须是一个插件依赖项,因为它A是运行B测试套件所需的插件.
  • dependsOn 不起作用,因为,它必须是一个插件依赖

我想知道其中任何一个

  • 怎么做,或
  • 为什么这是不可能的,以及接下来最好的选择是什么.

编辑:澄清它是一个插件依赖,因为构建依赖是模糊的

sbt

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

在字符串中查找插入

检查StringA = StringB与在某个任意点插入另一个StringC的最佳方法是什么?

例如,给定abcdefabcXYZdef,我想找到abcXYZdefabcdefXYZ在第4位插入.

另一方面,给定abcdefabRSTcdXYZef,我想找到第一个字符串不能只用一次插入就变成第二个字符串.

我知道我可以从两端逐字逐句地查看StringA,并检查它是否涵盖整个StringB,但这样写起来相当繁琐.在Python(我正在工作)中执行此操作也会相当慢,我宁愿不为此编写特殊的C扩展.

我能用Regex或其他标准字符串操作函数做些聪明的事情吗?

编辑:为了澄清,StringC是完全未知的; 甚至可能没有有效的StringC,我想知道是否是这种情况.

python regex string algorithm

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

如何在开发javaagents时运行测试?

我正试图摆弄Foursquare的HeapAudit,并试图使用IntelliJ IDEA进行设置.我已经设法使用pom.xml中的依赖项来构建它.

但是,当我实际尝试运行JUnit测试时,基本上所有测试都失败了.我猜这是因为使用HeapAudit需要将JVM作为a启动-javaagent,根据github:

$ java -javaagent:heapaudit.jar MyTest
Run Code Online (Sandbox Code Playgroud)

据推测,如果我把这条线放进去,测试就会通过,并引用heapaudit.jar我先前下载/构建的.但是,在我看来,如果我对源进行更改,我将需要重新打包这个愚蠢的.jar文件,以查看它是否有效.

有没有办法运行测试而-javaagent没有经历整个编译 - > package-into-jar每个测试周期的整个过程?也许让IntelliJ 在运行测试之前附加新编译的.class文件-javaagent

java junit profiling jvm intellij-idea

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

JQuery:用另一组替换元素集的优雅方式?

我有一堆DOM喜欢

<div>
    <div class="stuff"/>
    <div class="stuff"/>
    <div class="stuff"/>
</div>
Run Code Online (Sandbox Code Playgroud)

我想用一套新东西替换它

<div>
    <div class="stuff"/>
    <p class="stuff"/>
    <ul class="stuff"/>
    <a class="stuff"/>
</div>
Run Code Online (Sandbox Code Playgroud)

哪个将通过Ajax获取.我的问题是:最好的方法是什么?

$.replaceWith并不是我想要的,因为我最终得到了新的多个副本stuff.

我可以保证所有的stuff将在一个连续的块中,因此我可能会在旧的最后一个元素之后(或在第一个元素之前)放入一些占位符stuff,删除旧的stuff,并用new替换占位符stuff.

然而,这似乎相当迂回而且不优雅.是否有任何巧妙的方法,删除所有旧的stuff,并一次性放入一个新的副本stuff

编辑:我也想在不使用任何容器div的情况下这样做.使用容器div可以在上面的情况下工作,但在某些情况下会失败,比如当stuff它位于<table>:

<table>
    <head/>
    <body>
        <tr/>
        <tr class="stuff"/>
        <tr class="stuff"/>
        <tr class="stuff"/>
        <tr/>
    </body>
</table>
Run Code Online (Sandbox Code Playgroud)

如果我想要替换标记stuff为另一组行的行,可能更多,可能更少,我无法在不破坏HTML的情况下将它们很好地放入容器中,因为<body>它只能包含<tr>s(IIRC).

html javascript jquery

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