我从一个简单的例子开始,将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的所有功能以及它与其他语言的区别。
感谢。
答案 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)))
如前所述,您的目标不应该是让您的代码尽可能简洁。可读性更重要。