首页 > 解决方案 > 如何打印向量中的元素

问题描述

我有一个向量向量,我想打印每个向量中的元素

我尝试了 pprint 但没有按要求工作

这是我希望打印的向量向量:

[["+" "+" "+" "#" "!" "-" "#" "#" "#" "-" "-" "-" "-"]
 ["!" "#" "+" "+" "+" "#" "+" "+" "+" "-" "#" "#" "-"]
 ["#" "#" "#" "#" "+" "#" "+" "#" "+" "#" "-" "#" "#"]
 ["+" "+" "+" "#" "+" "+" "+" "#" "+" "#" "-" "-" "-"]
 ["+" "#" "+" "#" "#" "#" "#" "+" "+" "-" "#" "#" "-"]
 ["+" "#" "+" "+" "+" "+" "+" "+" "#" "-" "-" "-" "-"]
 ["+" "#" "#" "#" "#" "#" "#" "#" "#" "#" "#" "#" "#"]
 ["+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "@"]]

这是我想要的输出:

+++#--###--#-
!#+++#+++-##-
####+#+#+#!##
+++#+++#+#!!!
+#+####++!##!
+#++++++#!!!!
+############
++++++++++++@

标签: clojure

解决方案


您可以使用cl-format处理带有控制字符串的列表(在这种情况下为列表列表):

(def input
  [["+" "+" "+" "#" "!" "-" "#" "#" "#" "-" "-" "-" "-"]
   ["!" "#" "+" "+" "+" "#" "+" "+" "+" "-" "#" "#" "-"]
   ["#" "#" "#" "#" "+" "#" "+" "#" "+" "#" "-" "#" "#"]
   ["+" "+" "+" "#" "+" "+" "+" "#" "+" "#" "-" "-" "-"]
   ["+" "#" "+" "#" "#" "#" "#" "+" "+" "-" "#" "#" "-"]
   ["+" "#" "+" "+" "+" "+" "+" "+" "#" "-" "-" "-" "-"]
   ["+" "#" "#" "#" "#" "#" "#" "#" "#" "#" "#" "#" "#"]
   ["+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "@"]])

(use 'clojure.pprint)

(cl-format *out* "~{~{~a~}~%~}" input)

输出:

+++#!-###----
!#+++#+++-##-
####+#+#+#-##
+++#+++#+#---
+#+####++-##-
+#++++++#----
+############
++++++++++++@

说明: ~a是任何类型的格式参数。当包含在~{and~}中时,格式参数将在列表上进行迭代。~{因此,当用and括起来两次时~}~a将应用于嵌套列表中的每个元素(字符)。最后~%一个~}是输出换行符。有了这个,您可以轻松地使用控制字符串更改输出。例如:

(cl-format *out* "~{~{(~a)~^ ~}~^~%~%~}" input)

(+) (+) (+) (#) (!) (-) (#) (#) (#) (-) (-) (-) (-)

(!) (#) (+) (+) (+) (#) (+) (+) (+) (-) (#) (#) (-)

(#) (#) (#) (#) (+) (#) (+) (#) (+) (#) (-) (#) (#)

(+) (+) (+) (#) (+) (+) (+) (#) (+) (#) (-) (-) (-)

(+) (#) (+) (#) (#) (#) (#) (+) (+) (-) (#) (#) (-)

(+) (#) (+) (+) (+) (+) (+) (+) (#) (-) (-) (-) (-)

(+) (#) (#) (#) (#) (#) (#) (#) (#) (#) (#) (#) (#)

(+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (@)

请注意,“ ~^”是在列表用完时停止迭代的指令。所以“ ~^<space>”会抑制每行最后一个元素之后的空格。而“ ~^~%~%”将抑制最后一行之后的双换行符。


推荐阅读