我正在尝试使用Python格式化整数列表,但是我在实现我想要的方面遇到了一些困难.
输入是整数的排序列表:
list = [1, 2, 3, 6, 8, 9]
Run Code Online (Sandbox Code Playgroud)
我希望它的输出是一个像这样的字符串:
outputString = "1-3, 6, 8-9"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我设法实现的目标是:
outputString = "1-2-3, 6, 8-9"
Run Code Online (Sandbox Code Playgroud)
如果它已经连续,我很难告诉我的代码忽略一个Int.
到目前为止,这是我的代码:
def format(l):
i = 0
outputString = str(l[i])
for x in range(len(l)-1):
if l[i + 1] == l[i]+1 :
outputString += '-' + str(l[i+1])
else :
outputString += ', ' + str(l[i+1])
i = i + 1
return outputString
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助和见解:)
我是一名Common Lisp初学者,正在努力完成我的任务之一......
我的一个CS任务是创建一个基本上作为clisp的内置nthcdr函数的函数.
我们称之为ncdr:
(ncdr n L)=> n是我们要输出的cdr,L列表
例子:
(ncdr 2 '(a b c)) => (c)
(ncdr 0 '(a b c)) => (a b c)
(ncdr -1 '(a b c)) => nil
(ncdr 5 '(a b c)) => nil
Run Code Online (Sandbox Code Playgroud)
所以我的方法是设置一个计数器并将其与n进行比较
以下是我想到的条件:
if n < 0 -> nil
if counter < n -> + 1 counter and (ncdr (cdr list)
if counter = n -> output list
if counter > n -> nil
Run Code Online (Sandbox Code Playgroud)
这就是我想出的......我不认为这是最有效的方式,而且现在,它不起作用.
(defun ncdr (n L &aux counter)
(setq …Run Code Online (Sandbox Code Playgroud)