将循环和输出压缩成一个语句

时间:2018-02-28 10:27:41

标签: python

我从一个简单的例子开始,将Python代码与c#(我更常用的语言)进行比较:

s=''
for x in range(20,1,-3):
    print(x)
    s+="%d%s" % (x,":")
print(s[:-1])

简单输出:20:17:14:11:8:5:2

然后我考虑了最短的,不一定是最有效的方法,并在阅读了列表理解之后提出了这个。

print(''.join([("%d%s" % (x,":")) for x in range(20,1,-3)])[:-1])

还有更短的路吗?我知道这是一个微不足道的问题,但实际上它是关于学习Python的所有功能以及它与其他语言的区别。

感谢。

3 个答案:

答案 0 :(得分:8)

您可以使用

>>> ":".join(map(str, range(20,1,-3)))
>>> '20:17:14:11:8:5:2'

答案 1 :(得分:5)

看起来最后的切片只是删除未使用的:,所以如何:

print(':'.join(map(str, range(20, 1, -3))))

Python通常不是关于紧凑性而是可读性。

答案 2 :(得分:2)

这是另一种选择(仅限Python 3.6+):

print(':'.join(f'{i}' for i in range(20, 1, -3)))

如前所述,您的目标不应该是让您的代码尽可能简洁。可读性更重要。