我正在计划我的第一个项目,并遇到了一个问题。在我的部分要求中,我需要附加所有顶级子列表
(例如'((1 2)(3 4 (5 6))) -> (1 2 3 4 (5 6)) and '((1 2 3)(4 5)) -> (1 2 3 4 5)
我已经设法让它工作到一个列表,但这会使所有级别变平:
(cond
((null? lst)
lst)
((list? lst)
(append2(append-subs(car lst))(append-subs(cdr lst))))
(else
(cons lst '())))
此变体(例如。(else lst)
运行错误"object 6, passed as first arg to cdr, is not correct type"
。我尝试的另一种方法如下:
(cond
((null? lst)
lst)
((>= (len (cdr lst)) 0)
(append2(append-subs(car (list lst)))(append-subs(cdr (list lst)))))
(else
lst)
哪个无限循环。我有点站着,所以任何帮助都会非常感激。 (注意:禁止使用除此处使用的功能以外的功能。限于列表,列出?,if,cond,null?...)
答案 0 :(得分:1)
您的列表'(e1 e2 e3)
将是这样的:
(cons e1 (cons e2 (cons e3 '())))
或者如果你喜欢点缀符号:
'(e1 . (e2 . (e3 . ())))
en
#f
或#t
(list? en)
en
;;; flatten a list a certain levels
;;; level of zero is identity
(define (flatten-level level lst)
(cond ((or (zero? level)
(null? lst))
lst)
;; pair? is faster but will fall through for dotted
((list? (car lst))
(append (flatten-level <??> <??>)
(flatten-level <??> <??>)))
(else
(cons <??>
(flatten-level <??> <??>)))))
(flatten-level 0 '((1 2)(3 (((4 . 3))) (5 (6))) . 7))
; ==> ((1 2) (3 (((4 . 3))) (5 (6))) . 7) (aka identity)
(flatten-level 1 '((1 2)(3 (((4 . 3))) (5 (6))) . 7))
; ==> (1 2 3 (((4 . 3))) (5 (6)) . 7)
(flatten-level 99 '((1 2)(3 (((4 . 3))) (5 (6))) . 7))
; ==> (1 2 3 (4 . 3) 5 6 . 7)
{@ 1}} <div class="ch-rating"> "VERYGOOD 8.37"
<div class="star-rating star-rating--alt star-rating--ch" data-rating="8.37" style="">
<span style="width: 83.7%;"></span>
</div>
</div>
.getAttribute()
bot.FindElementByXPath("//div[@data-rating]").
需要追加两者。
以下是如何使用level作为输入参数来实现它的一般概念:
import getMuiTheme from 'material-ui/styles/getMuiTheme'
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'
答案 1 :(得分:0)
如何附加顶部列表的所有元素:
(define (flatten-top-level lst)
(apply append lst))
实际上这是 append*
的定义如果'(a (b) (c f))
是有效输入,(第一个元素不是列表),那么您可以尝试:
(define (flatten-top-level lst)
(apply append
(map (lambda (e) (if (list? e)
e
(list e))) ;make a list from the non-list element
lst)))
第二个选项:折叠!
(define (flatten-top-level lst)
(foldr append '() lst))
对于列表(a b c d),其中a,b,c,d是子列表;它等于:
(append a (append b (append c (append d '()))))
额外:这是尾递归,因此在线性时间内运行:)