首页 > 解决方案 > 获取不在列表中的随机字符串

问题描述

我有一个选择列表。我们假设它是['active', 'inactive', 'deleted']. 我想获得一个不在该列表中的随机字符串(例如,disabled),复杂之处在于我不想自己查看该列表(函数必须普遍适用于任何字符串列表)。

我知道如何从列表中获取随机字符串random.choice。我想要的是它的倒数。

实际案例 - 我想写一个带有assertNotIn断言的单元测试。

所以,我现在的代码如下:

import random
import string

insiders = ['active', 'inactive', 'deleted']

while True:
    outsider = ''.join(random.choice(string.ascii_letters) for _ in range(random.choice(range(1, 10))))
    if outsider not in insiders:
        break

我的问题是:有没有更短的解决方案?理想情况下,单线。像这样的东西:

outsider = random.not_in_list(insiders)

标签: pythonrandom

解决方案


正如我在一个问题中提到的那样,我目前有一个解决方案。它基于一种random.choice方法并生成任意长度的字符串(从 1 到 9 个符号):

import random
import string

insiders = ['active', 'inactive', 'deleted']

while True:
    outsider = ''.join(random.choice(string.ascii_letters) for _ in range(random.choice(range(1, 10))))
    if outsider not in insiders:
        break

结果:

'aJirzLZjD'
# or
'x'
# or
'PYxAeL'
# and so on...

推荐阅读