您好我有一个这样的列表:[1,2,3,4,5,6]
我想将"%"
添加到列表中的所有这些元素,以获得[1%,2%,3%,4%,5%,6%]
的结果。
我知道我可以使用+"%"
执行此操作但是如何使用.format
或其他内容执行此操作?
答案 0 :(得分:2)
答案 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。