python - 重复列表中的每个元素任意次

标签 python list python-3.x numpy

我想知道如何重复列表中的每个元素任意次,例如

l = ['a', 'b', 'c']

l 中的重复元素会生成一个新列表,

n = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c']

所以'a'被重复了3次,'b'被重复了一次,'c'被重复了两次。每个元素的重复次数由 numpy.random.poisson 决定,例如numpy.random.poisson(2)。

最佳答案

这是一种基于 NumPy 的矢量化方法,使用 np.repeat创建一个数组 -

np.repeat(l, np.random.poisson([2]*len(l)))

如果您需要列表作为输出,请附加 .tolist()那里 -

np.repeat(l, np.random.poisson([2]*len(l))).tolist()

如果您想为每个元素至少保留一个条目,请使用 np.random.poisson([2]*len(arr)).clip(min=1) 添加剪辑.

关于python - 重复列表中的每个元素任意次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40421249/

相关文章:

python - `as` 命令在 Python 3.x 中有什么作用?

python - 从 Airflow 中的 BigQueryOperator 获取结果

python - 使用 Pandas 清理 HTML 表格

python - 在python中打印排序和未排序的列表

python - 如何从列表列表或元组列表中删除包含某些单词的列表?

python - 按行和列写入 csv

Python3 : Changing inheritance

python - 无法在某些搜索框中使用主题标签生成结果

python - 注释 'xy'与模型上的字段冲突-django

python - 为什么我不能用单行条件来中断?