python - 生成一个随机数,避免给定列表中的重复项
问题描述
我正在做一个项目,我需要编写一个函数来为我们公司的每个客户生成 ID。已经有一个现有的客户列表,其中一些客户的 ID 为 5 到 6 位数字,范围从 40,000 到 200,000。还有其他没有 ID 的现有客户,我想与现有的 ID 号码(例如 43606 或 125490)保持一致。
因此,为了保持类似的格式,我创建了一个Exclusion_List
包含所有现有 ID 号的格式。然后我打算编写一个函数,使用np.random.uniform(low=40000, high=200000)
它在该范围内生成一个看起来与其他 ID 号相似的数字。
我遇到的问题是我不知道如何设置一个循环来检查随机生成的 ID 是否已经在排除列表中,如果是的话;然后生成一个新的。
这是我到目前为止所拥有的:
exclusions = [43606,125490,...]
def ID_Generator(new_clients): # This is a list of new client
new_client_IDs = []
for client in new_clients:
ID = int(np.random.uniform(low=40000, high=200000))
while ID not in exclusions:
new_client_IDs.append(ID)
当随机生成的数字在排除列表中时,我不确定如何处理这种情况。我希望该函数输出一个数据框,其中一列中包含客户端名称,第二列中包含 ID 号。
感谢您对此的任何帮助!
解决方案
我现在能想到的简单方法是。
- 从 生成列表
40000-200000
。 exclusions
从上面的列表中删除所有。- 从剩余列表中随机选择任何 id(如果顺序很重要,请按顺序使用 id)。
import random
exclusions = [43606,125490]
all = range(40000,200000)
remaining = [x for x in all if x not in exclusions]
random.choice(remaining)
推荐阅读
- python - 如何删除所有以某个值开头的值?
- android - Inno Setup SignTool Error 2 系统找不到指定的文件
- reactjs - 在 React 状态下更新嵌套对象
- c - 即使在 GCC 优化被关闭的情况下,是否有必要使用“volatile”限定符?
- java - Logback 记录到数据库没有异常但不起作用
- machine-learning - 深度学习背景下的交叉验证 | 物体检测
- javascript - 在 ReactJS 应用程序中使用库的问题
- vb.net - 重命名零件/装配的内部装配
- python - 我的脚本在 Python 2 中运行良好,但在 python 3-TypeError 中不行
- python - C 服务器 - Python 客户端。拒绝连接