小编Con*_*ean的帖子

如何在lodash中使用includes方法来检查对象是否在集合中?

lodash让我检查基本数据类型的成员资格includes:

_.includes([1, 2, 3], 2)
> true
Run Code Online (Sandbox Code Playgroud)

但以下不起作用:

_.includes([{"a": 1}, {"b": 2}], {"b": 2})
> false
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为以下搜索集合的方法似乎做得很好:

_.where([{"a": 1}, {"b": 2}], {"b": 2})
> {"b": 2}
_.find([{"a": 1}, {"b": 2}], {"b": 2})
> {"b": 2}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何检查集合中对象的成员资格includes

编辑:问题最初是针对lodash版本2.4.1,更新为lodash 4.0.0

javascript functional-programming lodash

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

最优雅的方法来修改嵌套列表的元素

我有一个2D列表,如下所示:

table = [['donkey', '2', '1', '0'], ['goat', '5', '3', '2']]
Run Code Online (Sandbox Code Playgroud)

我想将最后三个元素更改为整数,但下面的代码感觉非常难看:

for row in table:
    for i in range(len(row)-1):
        row[i+1] = int(row[i+1])
Run Code Online (Sandbox Code Playgroud)

但我宁愿有一些看起来像:

for row in table:
    for col in row[1:]:
        col = int(col)
Run Code Online (Sandbox Code Playgroud)

我认为应该有一种方法来编写上面的代码,但是切片创建了一个与原始代码分开的迭代器/新列表,因此引用不会延续.

有没有办法获得更多的Pythonic解决方案?

python nested-lists

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

迭代多个文件的所有行的最pythonic方法是什么?

我想将许多文件视为一个文件.什么是正确的pythonic方式采用[filenames] => [文件对象] => [行]与生成器/不读取整个文件到内存?

我们都知道打开文件的正确方法:

with open("auth.log", "rb") as f:
    print sum(f.readlines())
Run Code Online (Sandbox Code Playgroud)

我们知道将几个迭代器/生成器链接到一个长迭代器的正确方法:

>>> list(itertools.chain(range(3), range(3)))
[0, 1, 2, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

但是如何将多个文件链接在一起并保留上下文管理器?

with open("auth.log", "rb") as f0:
    with open("auth.log.1", "rb") as f1:
        for line in itertools.chain(f0, f1):
            do_stuff_with(line)

    # f1 is now closed
# f0 is now closed
# gross
Run Code Online (Sandbox Code Playgroud)

我可以忽略上下文管理器并执行类似的操作,但感觉不对:

files = itertools.chain(*(open(f, "rb") for f in file_names))
for line in files:
    do_stuff_with(line)
Run Code Online (Sandbox Code Playgroud)

或者这是Async IO-PEP 3156的用途,我只需要等待优雅的语法?

python logging parsing file

14
推荐指数
1
解决办法
5673
查看次数

榆树是否支持美元运算符($)?

在Haskell中,您可以使用$运算符来清理代码,从而无需使用parens.

榆树是否支持这种运算符,或类似的东西?

我可以自己定义,但我希望这是内置的东西.

以下是它的工作原理:

import Html
import List exposing (map, foldr)

datas = [("a", 1), ("b", 2), ("c", 3)]

{--}
($) : (a -> b) -> (a -> b)
($) a b = a b
infixr 0 $
--}

main =
  {-- replace all these parens
  Html.text (toString (foldr (++) "" (map fst datas)))
  --}
  Html.text $ toString $ foldr (++) "" $ map fst datas
Run Code Online (Sandbox Code Playgroud)

functional-programming elm

13
推荐指数
1
解决办法
993
查看次数

如何使用svn的基于http的浏览器查找修订版的delta/diff?

我正在开展一个项目,将问题攻击者链接到我们的源控制系统.

我发现您可以在svn Web浏览器中查找特定的修订版本:

https://svn-repo/!svn/bc/100/

要么

https://svn-repo/?p=100

要么

https://svn-repo/?r=100

但是这会向您显示该修订版的整个存储库结构.最终目标是能够创建指向浏览器可以单击的URL的链接以查看修订所做的更改.这可能吗?我似乎找不到任何东西.

svn diff revision

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

使用gitpython编辑提交

让我们说你在终端,目前坐在git repo的根源.

如果你已经安装了GitPython,你可以这样做以获得最后一次提交的提交,或者更确切地说,是HEAD指向的提交:

>>> import git
>>> r = git.Repo('.')
>>> c = r.head.commit
>>> c
<git.Commit "62e71e8210d0d0275b1f5845bf3033a7bfa3ed73">
>>> c.message
u'old message'
>>> c.message = "new message"
>>> c.message
'new message'
Run Code Online (Sandbox Code Playgroud)

但是如果退出python并进入git log此处,您将看到提交消息保持不变.如何编辑此库的提交?

python git gitpython

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

如果没有CSS修复,为什么我的盒子边框不包围它们内部的浮动?(修复如何工作?)

我正在自学CSS和HTML,而且我遇到了一些看似错误的东西 - 这对我如何理解HTML和CSS很有挑战性.我已经找到了解决这个bug的方法,但是我希望有人可以告诉我修复工作的原因,以及是否有一些建议可以更容易地处理CSS的不一致性.下面我详细介绍了问题及其解决方案.

问题:我有一些项目要嵌套在页面上的几个框中.我已经改变了CSS以引起注意特定的问题区域:红色和绿色框应该夹在黑色和黄色线之间.

红色和绿色框设置为浮动到页面的右侧和左侧.它们的容器不会膨胀以包围它们,并且黑色和黄色线条相互接触.在我的自定义CSS之前应用魔法CSS之后,两条线按预期包围红色/绿色框

这是我的文件:template.html

<html>
<head>
    <!-- uncomment the line below to enable the fix -->
    <!--<link rel="stylesheet" href="css/resettemp.css" type="text/css" > -->
    <link rel="stylesheet" href="css/template.css" type="text/css" > 
</head>
<body>
    <section class="content">
        <header id="contact">
            <div id="name">Name</div>

            <div id="address">
                <div>Home Address</div>
            </div>

            <div id="contact-details">
                <div><strong>Phone Number:</strong>5555 </div>
            </div>
        </header>
        This text should be under everything else.
    </section>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

template.css:

header#contact
{
    display: block;
    font-size: 1em;
    border-bottom: 5px #ff0 dashed;
}

header#contact
#name
{
    display:block;
    text-align: right;
    font-size: 2em;
    border-bottom: …
Run Code Online (Sandbox Code Playgroud)

html css css-float

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

你能让一个函数在Elm中使用多种类型吗?你有重载功能吗?

我正在尝试从JS移植一个库,我已经找到了一个可以接受字符串或字符串列表的函数.如果给定一个字符串,它会将其拆分为一个字符串列表,然后继续,就好像它首先被传递一样.

我可以通过定义自己的类型来做到这一点,但它会使API变得丑陋,并且需要为数据添加自定义类型前缀.

这是我得到的:

type DocumentBody = Raw String | Words List String

tokenize: DocumentBody -> List String
tokenize s = 
    case s of
        Raw str_body -> String.split " " str_body |> (List.map String.toLower)
        Words list_body -> List.map String.toLower list_body

-- Tests

tests = 
    suite "Tokenizer"
    [ test "simple" <| assertEqual ["this", "is", "a", "simple", "string"]
                                   <| tokenize (Raw "this is a simple string")

    , test "downcasing tokens: string" <| assertEqual ["foo", "bar"]
                                                      <| tokenize (Raw "FOO BAR")

    , test "downcasing …
Run Code Online (Sandbox Code Playgroud)

functional-programming overloading pattern-matching elm

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

尝试在DOM加载后注入CSS(编写Chrome扩展)

我正在尝试编写一个Chrome扩展程序,它只是将一个CSS文件添加到页面的css定义的末尾.

Google的文档说我可以使用该函数chrome.tabs.insertCSS()将css添加到页面,但是从content_script包含的javascript文件运行它不会做任何事情.

我正在尝试两种不同的方法,如Google网站上记录的那样.我有一个alert()声明告诉我我在剧本中的位置,但它从未进入决赛alert.这让我觉得我的脚本可能会在中间的某个地方崩溃.

这是我的源文件: manifest.json

{
    "name": "Custom CSS to GOOGLE",
    "version": "1.0",
    "description": "The first extension that I made.",
    "content_scripts": [
        {   
            "matches": ["http://*/*"],
            //"js": ["style_injector.js"],
            "js": ["inject.js"],
            "css": ["newstyle.css"]
        }   
    ],  
    "permissions": [
        "tabs", "http://*/*"
    ]   
}
Run Code Online (Sandbox Code Playgroud)

inject.css

alert("newpage");
chrome.tabs.executeScript(null, {code:"document.body.bgColor='red'"});
chrome.tabs.insertCSS(
    null,
    {   
        code:"body{background:red;}"
    }   
);
alert("finishpage");
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-extension

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

自动化Opsworks:您如何执行食谱?

我正在使用awscli尝试自动化部署过程(将菜谱更改为s3,点击内容以更新cookbook,单击内容以运行收件人,键入我想要执行的配方的名称).

我非常接近,但我找不到任何关于如何通过awscli在opsworks中实际执行给定配方的内容.我认为它必须非常接近更新自定义cookbook:

$ aws opsworks create-deployment --command "{\"Name\":\"update_custom_cookbooks\"}"  --stack-id xxxxx --instance-ids xxxxxxxxx
xxxxxxxx #deployment id
Run Code Online (Sandbox Code Playgroud)

该文档没有告诉我'execute_recipes'命令的格式是什么:http://docs.aws.amazon.com/cli/latest/reference/opsworks/create-deployment.html

在发送了一堆猜测并使用光荣洞察力的"无效值",SerializationException和ValidationExceptions之后,我推断出以下内容可能接近我想要的内容:

$ aws opsworks create-deployment --command "{\"Name\":\"execute_recipes\", \"Args\":{\"Recipes\":[\"book::recipe\"]}}"  --stack-id xxxxxx --instance-ids xxxxxxxx                                                                                                                                 
A client error (ValidationException) occurred
Run Code Online (Sandbox Code Playgroud)

使Opsworks在给定实例上执行配方的正确JSON模式是什么?

automation amazon-ec2 amazon-web-services

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