我想从列表末尾删除最后一个结束符号

时间:2016-10-17 20:47:49

标签: string list python-3.x

>>> for i in range(4):
...     print(i, end=" :-) ")
...
0 :-) 1 :-) 2 :-) 3 :-) >>>

我想在3.

之后删除最后一个:-)

1 个答案:

答案 0 :(得分:0)

我可以想出三种合理的方法来做到这一点。

首先要明确检查您要迭代的值,以确定要传递给end的{​​{1}}类型。由于您直接在print上进行迭代,这非常简单,只需测试最后一个值:

range

我使用“三元”表达式(for i in range(4): print(i, end=" :-) " if i < 3 else "\n") )来切换换行符的笑脸以跟随最后一个值。如果您的x if c else y大小不一样(例如range),则可以在条件表达式中测试range(x)

第二种方法是使用i < x-1将您的项目组合成一个已经烘焙过的分隔符的字符串,然后将单个字符串传递给str.join而没有特殊的print参数:

end

最后一个选项在Python 3中可用(如果使用print(" :-) ".join(str(i) for i in range(4))) 获取{3}}的Python 3版本,则在Python 2的更高版本中可用。使用参数解包将整个from __future__ import print_function数字一次传递给print函数,并将笑脸作为range参数传递而不是print

sep

这可能是最好的解决方案。启用此类代码是end成为Python 3中的函数的主要原因之一(您无法将序列解压缩为Python 2 print(*range(4), sep=" :-) ") 语句的参数)。