将百分比符号添加到所有列表元素

时间:2016-12-20 09:00:51

标签: python list python-3.x

您好我有一个这样的列表:[1,2,3,4,5,6]

我想将"%"添加到列表中的所有这些元素,以获得[1%,2%,3%,4%,5%,6%]的结果。

我知道我可以使用+"%"执行此操作但是如何使用.format或其他内容执行此操作?

3 个答案:

答案 0 :(得分:2)

PyFormat帮助

['{:d}%'.format(elm) for elm in l]

输出:

['1%', '2%', '3%', '4%', '5%', '6%']

答案 1 :(得分:1)

当然你可以用format来做,你的结果当然需要是字符串:

l = [1,2,3,4,5,6]
r = list(map("{}%".format, l))

现在,r是:

['1%', '2%', '3%', '4%', '5%', '6%']

或者你可以像在另一个答案中一样使用list-comp,或者通过循环来实现:

for ind, i in enumerate(l):
    l[ind] = "{}%".format(i)

答案 2 :(得分:1)

既然您已经问过:or another thing?我会给您another thing

有时候,你会想要一些看起来不怎么样的东西,比如:

# add method to built-in int class to render ints as percents
as_percent = lambda x: str(x) + '%'
# and then monkey patch it
int.as_percent = as_percent

但是,您最终会得到Exception

TypeError: can't set attributes of built-in/extension type 'int'

但是,有一种方法..

在您尝试以下小免责声明之前:

  

我从来没有在任何实际的代码中使用过这个,但我觉得这非常有趣,而且知道它存在也非常好。在Ruby中有一些代码,我喜欢猴子修补内置插件的想法。但它不是Python中的默认行为。所以,请注意。但至少,试试吧!

首先,你需要这个模块forbiddenfruit(参见名称是不言自明的!)。只需pip它。

然后很容易。我们将使用与以前完全相同的lambda函数as_percent

>>> from forbiddenfruit import curse
>>> # again, do you see the name of the function?!
>>> curse(int, 'as_percent', as_percent)
>>> print((1).as_percent())
1%
>>> [x.as_percent() for x in range(10)]
>>> ['0%', '1%', '2%', '3%', '4%', '5%', '6%', '7%', '8%', '9%']

我遇到了here