小编Yos*_*iki的帖子

格式化连续数字

我正在尝试使用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)

感谢您的帮助和见解:)

python format int

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

在不使用nthcdr的情况下获取列表的第n个cdr

我是一名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)

lisp common-lisp cdr

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

标签 统计

cdr ×1

common-lisp ×1

format ×1

int ×1

lisp ×1

python ×1