小编beo*_*ver的帖子

从json到ruby哈希?

我可以单程使用

require 'json'

def saveUserLib(user_lib)
    File.open("/Users/name/Documents/user_lib.json","w") do |f|
    f.write($user_lib.to_json)
    end
end

uname = gets.chomp
$user_lib["_uname"] = uname
saveUserLib($user_lib)
Run Code Online (Sandbox Code Playgroud)

但是我如何将它作为我的user_lib重新获得呢?

ruby json

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

可以部分应用不带关键字参数的函数的第二个参数吗?

以python内置pow()函数为例.

xs = [1,2,3,4,5,6,7,8]

from functools import partial

list(map(partial(pow,2),xs))

>>> [2, 4, 8, 16, 32, 128, 256]
Run Code Online (Sandbox Code Playgroud)

但是我如何将xs提高到2的幂?

要得到 [1, 4, 9, 16, 25, 49, 64]

list(map(partial(pow,y=2),xs))

TypeError: pow() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)

我知道列表理解会更容易.

python arguments partial-application

38
推荐指数
5
解决办法
1万
查看次数

是不是可以从python中的函数返回任何内容?

使用一个简单的过滤器,测试0-100范围内的输入.

def foo(foo_input):
    if 0 <= foo_input <= 100:
        return f_input
Run Code Online (Sandbox Code Playgroud)

如果,则返回none foo_input is > 100.但它真的"不"会返回任何东西吗?或者功能总是必须返回一些东西?

python function

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

在Haskell,Python和Ruby中列出理解

我已经开始将项目Euler站点作为一种学习Haskell的方法,并改进我的Python和Ruby.我认为Haskell和Python版本都可以,但我确信Ruby必须有一个更简洁的方法.

这不是关于如何使一种语言看起来像另一种语言.

这是问题1:

问:添加1000以下的所有自然数,即3或5的倍数.

哈斯克尔:

sum [ x | x <- [1..999], mod x 3 == 0 || mod x 5 == 0 ]
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

sum ( [ x for x in range(1,1000) if x % 3 == 0 or x % 5 == 0 ] )
Run Code Online (Sandbox Code Playgroud)

红宝石:

(1..999) . map {|x| x if x % 3 == 0 || x % 5 == 0 } . compact . inject(:+)
Run Code Online (Sandbox Code Playgroud)

他们都给出了相同的答案.


好的,所以Python可以成为:

sum ( x for …
Run Code Online (Sandbox Code Playgroud)

ruby python haskell list-comprehension

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

emacs haskell模式中的默认lambda符号?

有没有人知道如何在emacs中使用haskell打印λ而不是\.我知道可以使用haskell-font-lock-symbols,但我发现其余部分很难阅读 - 箭头太小了!

是否有一种简单的方法来覆盖其余的钥匙?

emacs haskell

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

将两个变量分配给一个列表切片

是否可以一次性分配给列表切片,这将实现以下目标:

mylist = [1,2,3,4,5,6,7]

xs = mylist[:-1]
x  = mylist[-1]

xs == [1,2,3,4,5,6]
x  == 7
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样写:

xs,x = mylist[:-1], mylist[-1]
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有可能以任何其他方式.或者被Haskell的模式匹配宠坏了.

就像是 x,xs = mylist[:funky:slice:method:]

python list pattern-matching slice

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

python子进程输出到列表或文件

我想在Python 3中运行以下bash命令:

ls -l
Run Code Online (Sandbox Code Playgroud)

我知道我可以做以下事情:

from subprocess import call
call(['ls', '-l'])
Run Code Online (Sandbox Code Playgroud)

如何将此输出保存到文件中,或将其放入列表或集合中?

[-rw-r--r--]  [1] [name]  [staff]   [426] [14 Jan 21:52] [HelloWorld.class]
[-rw-r--r--@] [1] [name]  [staff]   [107] [14 Jan 21:51] [HelloWorld.java]
...
etc.
Run Code Online (Sandbox Code Playgroud)

我希望能够直接访问特定信息,然后将其添加到集合中,但我不知道将列出多少项目.

任何提示,片段或示例都会有所帮助.

python subprocess python-3.x

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

python现在,接下来,n迭代

编写一个通用函数,可以迭代任何可迭代的返回现在,下一对.

def now_nxt(iterable):
    iterator = iter(iterable)
    nxt = iterator.__next__()
    for x in iterator:
        now = nxt
        nxt = x
        yield (now,nxt) 

for i in now_nxt("hello world"):
    print(i)

('h', 'e')
('e', 'l')
('l', 'l')
('l', 'o')
('o', ' ')
(' ', 'w')
('w', 'o')
('o', 'r')
('r', 'l')
('l', 'd')
Run Code Online (Sandbox Code Playgroud)

我一直在考虑编写函数的最佳方法,其中可以设置每个元组中的项目数.

例如,如果是的话

func("hello",n=3)
Run Code Online (Sandbox Code Playgroud)

结果将是:

('h','e','l')
('e','l','l')
('l','l','o')
Run Code Online (Sandbox Code Playgroud)

我是新手使用timeit,所以请指出我在这里做错了什么:

import timeit

def n1(iterable, n=1):
    #now_nxt_deque
    from collections import deque
    deq = deque(maxlen=n)
    for i in iterable:
        deq.append(i)
        if len(deq) == n:
            yield …
Run Code Online (Sandbox Code Playgroud)

python iterator function

6
推荐指数
2
解决办法
396
查看次数

具有阶乘的haskell分段故障

GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> let fac 0 = 1
Prelude> let fac n = product [1..n]
Prelude> fac 100000
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么会发生这种情况?

fac 10000 作品

在OS X 10.8.2上运行

嗯,所以从文件加载:

fac :: Integer -> Integer
fac 0 = 1
fac n = product [1..n]
Run Code Online (Sandbox Code Playgroud)

运行.

也很有意思的是使用

fac :: Int -> Int

返回0fac …

haskell segmentation-fault

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

为什么compojure路由被定义为宏?

例如,Luminus网站说明了这一点

Compojure路由定义只是接受请求映射和返回响应映射的函数......

(GET "/" [] "Show something")
...
Run Code Online (Sandbox Code Playgroud)

但是组合路线不是功能

(defmacro GET "Generate a `GET` route."
  [path args & body]
  (compile-route :get path args body))
Run Code Online (Sandbox Code Playgroud)

可以使用make-route返回函数的函数,但不允许进行解构.因此,作为一个函数,你不能使用compojure的特殊语法来破坏(即向量)但是这会阻止任何形式的解构吗?宏给它们提高了性能吗?

(make-route :get "/some_path" some_handler)
Run Code Online (Sandbox Code Playgroud)

难道不能使用宏包装器将破坏语法传递给函数吗?

clojure compojure compojure-api

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