小编Cle*_*v3r的帖子

迭代元组列表

我正在寻找一种干净的方法来迭代一个元组列表,其中每个都是这样的一对[(a, b), (c,d) ...].最重要的是,我想改变列表中的元组.

标准做法是避免更改列表,同时也迭代它,所以我该怎么办?这就是我想要的:

for i in range(len(tuple_list)):
  a, b = tuple_list[i]
  # update b's data
  # update tuple_list[i] to be (a, newB)
Run Code Online (Sandbox Code Playgroud)

python iteration tuples list

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

模糊CCLayerColor(用于暂停菜单)

我很好奇是否有人知道已经实现的模糊整个CCLayer的方法.我使用一个简单的CCLayerColor设置为黑色,有一点不透明度,但我希望能够模糊背景足以成为难以区分的blob.

cocos2d-iphone

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

clojure.spec人类可读的形状?

使用clojure.spec,是否可以为嵌套地图定义更“易于阅读”的规范?以下内容不太理想:

(s/def ::my-domain-entity (s/keys :req-un [:a :b])
(s/def :a (s/keys :req-un [:c :d]))
(s/def :b boolean?)
(s/def :c number?)
(s/def :d string?)
Run Code Online (Sandbox Code Playgroud)

假设一个符合实体的形状类似于

{:a {:c 1 :d "hello"} :b false}

我的抱怨是,如果规范具有任何嵌套的映射或任何深层的结构,则将变得更难阅读……因为您要在文件中上下移动关键字,并且它们不是“就地”声明。

作为比较,类似schema之类的东西允许使用更易读的嵌套语法,该语法紧密地反映了实际的数据形状:

(m/defschema my-domain-entity {:a {:c sc/number :d sc/string} :b sc/bool})

可以在clojure.spec中完成吗?

clojure clojure.spec

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

列表字典的最大/最小值

我有一个字典映射id_到数据值列表,如下所示:dic = {id_ : [v1, v2, v3, v4]}.我试图遍历字典中的每个值并检索列表映射的某个索引的最大/最小值.

我想做的是这样的:

maximum = max([data[0], ??) for id_, data in self.dic.items()])
Run Code Online (Sandbox Code Playgroud)

......但显然这不起作用.是否有可能在上面的一行中执行此操作?

python

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

" - >>"宏和迭代函数应用程序

我正在写一本关于clojure的书,然后遇到了一个带有" - >>"的绊脚石.作者提供了一个compcamelCased关键字转换为具有更惯用法的clojure地图的示例camel-cased.这是使用comp的代码:

(require '[clojure.string :as str])                               

(def camel->keyword (comp keyword
                          str/join
                          (partial interpose \-)
                          (partial map str/lower-case)
                          #(str/split % #"(?<=[a-z])(?=[A-Z])")))
Run Code Online (Sandbox Code Playgroud)

这很有意义,但我并不喜欢partial在整个地方使用来处理可变数量的参数.相反,这里提供了另一种选择:

(defn camel->keyword
  [s]
  (->> (str/split s #"(?<=[a-z])(?=[A-Z])")
    (map str/lower-case)
    (interpose \-)
    str/join
    keyword))
Run Code Online (Sandbox Code Playgroud)

这种语法更具可读性,并模仿我思考解决问题的方式(从前到后,而不是从前到后).扩展comp以完成上述目标......

(def camel-pairs->map (comp (partial apply hash-map)
                            (partial map-indexed (fn [i x]
                                                   (if (odd? i)
                                                     x
                                                     (camel->keyword x))))))
Run Code Online (Sandbox Code Playgroud)

什么是等效使用->>?我不确定如何使用地图索引(或任何迭代函数)->>.这是错的:

(defn camel-pairs->map 
  [s]
  (->> (map-indexed (fn [i x]
         (if (odd? i)
           x …
Run Code Online (Sandbox Code Playgroud)

clojure

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

用lambda减少设置

给定一个集合,其中每个元素都是一个字符串,如何将集合减少为一个整数,这个整数是这些字符串长度的总和?

setA = ("hi", "hello", "bye")
reduce(lambda .... for word in setA)
Run Code Online (Sandbox Code Playgroud)

使用一些lambda函数调用reduce应该返回10(2 + 5 + 3).

我想,我可以用几个lambdas做到这一点,但必须有一个更清洁的方式.

python functional-programming

0
推荐指数
1
解决办法
324
查看次数