如何在python中的列表的每个元素中添加常量字符串?

时间:2018-09-19 06:33:42

标签: python pandas

我想在列表的每个元素中添加一个常量值作为前缀。我想做类似于 this post 的事情。但以上答案都使用for循环。我想避免程序中的循环。

我的目标是我必须创建一个列表,其值应为"unknown contact number 0", "unknown contact number 1","unknown contact number 2"..."unknown contact number n".,此处unknown contact number是我的前缀。我想将此元素添加到列表中。

到目前为止,我已经尝试过了

x=pd.DataFrame(index=range(val))
print ('unknown contact number '+x.index.astype(str)).values.tolist()

我的问题是我是否要在代码中添加更复杂的代码以避免for循环? 或任何其他更好的方法来解决此问题?

谢谢。

2 个答案:

答案 0 :(得分:5)

如果性能很重要,可以使用f-string,因为熊猫的文本功能很慢:

a = [f'unknown contact number {i}' for i in range(N)]

时间

N = 10000

In [31]: %timeit ('unknown contact number ' + pd.Series(np.arange(N)).astype(str)).tolist()
6.63 ms ± 708 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [32]: %timeit [f'unknown contact number {i}' for i in range(N)]
317 µs ± 3.61 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

答案 1 :(得分:0)

如果您想不惜一切代价避免for循环,可以尝试使用带有lambda函数的map。

list_ = map(lambda x : 'unknown contact number' + x, df.index.astype(str).values.tolist())

如果您使用的是python 3,则map具有懒惰的优势。尽管将具有lambda函数的map与列表理解相比要慢一些,但是如果您具有自定义函数,则始终可以将其与map一起使用。