为了添加到列表前面,我使用 the_list[0:0]。但是添加切片后:
例子:
results = [3,1,0]
results[-1:-1] = [3]
print(results)
>>> [3,1,3,0]
results[-0:-0] = 5
print(results)
>>> [5,3,1,3,0]
results = [3,1,0]
results[-1:-1] = [3]
print(results)
>>> [3,1,3,0]
results[-0:-0] = 5
print(results)
>>> [5,3,1,3,0]
Run Code Online (Sandbox Code Playgroud)
想法?
“Clojure 形而上学将身份解释为我们人类强加于一个过程随时间产生的一系列不变价值的东西”。
如果这是真的,如果身份环绕所有这些状态,那么我应该能够做这样的事情。
user=> (def wow (atom 1))
#'user/wow
user=> (swap! wow (fn [cur] "You say 'Hello'."))
"You say 'Hello'."
user=> (swap! wow (fn [cur] "I say 'Goodbye'."))
"I say 'Goodbye'."
user=> (swap! wow (fn [cur] "Hello, hello!"))
"Hello, hello!"
; Can I do this?
user=> (get-old-atom-state wow 0)
1
(get-old-atom-state wow 1)
"You say 'Hello'"
Run Code Online (Sandbox Code Playgroud)
是这样吗?或者,如果不使用,Clojure 实际上是否会 GC 旧值?
我得到了两个向量[shoes milk shoes]和[1 3 1],而我想要得到的地图是{shoes 2, milk 3}。我尝试了zipmap两个向量并且只{shoes 1 milk 3}显示。没有循环和迭代,还有另一种方法吗?
我现在正在学习 Clojure,我来自命令式编程,所以我在理解该代码的执行流程时遇到了问题:
(defn chop-chop [coll]
(let [x (partition-by identity coll)]
(map list (map (comp str first) x)
(map count x))))
=> (chop-chop "aaaabbbcca")
=> (("a" 4) ("b" 3) ("c" 2) ("a" 1))
Run Code Online (Sandbox Code Playgroud)
我明白我们:
在此处创建带有参数 coll 的函数chop-chop
然后我们为 coll 应用函数 partition-by,但我不确定身份是什么
接下来我们将之前操作的结果绑定到 x
但我无法理解下一行代码:
(map list (map (comp str first) x)
(map count x))))
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释该程序的逐步执行流程吗?非常感谢!