一个 print 的问题

2016-05-15 13:07:51 +08:00
 snoopygao
业余学习 python , 只为解决工作生活中的问题
想打印如下格式,除了这种方法还有其它更 python 的方法吗
1-2-3-4-5-6

>>> for i in range(4):
if i < 3:
print(i, end='-')
else:
print(i)


0-1-2-3
2954 次点击
所在节点    Python
10 条回复
pkuphy
2016-05-15 13:09:51 +08:00
```python
'-'.join([str(i) for i in range(4)])
```
pkuphy
2016-05-15 13:10:36 +08:00
```
'-'.join([str(i) for i in range(4)])
```
snoopygao
2016-05-15 13:17:43 +08:00
多谢,以前只注意到 split ,没注意到 join
lunaticus7
2016-05-15 13:41:55 +08:00
'-'.join(map(str, range(4)))
不过按照现在的趋势, map 不太推荐使用了
SakuraSa
2016-05-15 13:54:27 +08:00
既然是 py3 的话,是不是可以这样:

print(*range(4),sep='-')
junnplus
2016-05-15 14:02:02 +08:00
发现 ruby 写起来好优雅
(1..4).to_a.join('-')
billlee
2016-05-15 14:15:31 +08:00
'-'.join((str(i) for i in range(4)))
yhylord
2016-05-15 20:06:49 +08:00
@lunaticus7 为什么不推荐用 map 呢?
lunaticus7
2016-05-16 09:46:39 +08:00
@yhylord 推荐使用 list comprehension 取代 map 、 filter 等函数,更自由,并且表现力更高。
成文的规定可以参考:
https://google.github.io/styleguide/pyguide.html#Deprecated_Language_Features

# map and filter
map(lambda x:x+1, filter(lambda x:x%3, range(10)))
# same as LC
[x+1 for x in range(10) if x%3]
mornlight
2016-05-16 10:42:13 +08:00
@lunaticus7 map,reduce,filter 是函数式编程的思维,直接建议用其他方式替代是不是太粗暴了,那个 guide 原文里的意思是这些函数的参数里有 lambda 表达式时考虑替代。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX