Mar*_*ark 0 python random list
我试图在python中随机替换20%的列表:
ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ls = [1, 2, NULL, 4, 5, 6, NULL, 8, 9, 10]
ls = [1, 2, 82, 4, 5, 6, 28, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
至今
while n <= len(ls)/5
ls[randint(0, 9)]=randint(1, 100)
n += 1
Run Code Online (Sandbox Code Playgroud)
但它有很大的机会在一次运行中多次删除和替换相同的条目.
假设ls可能是任何东西,我建议生成一个索引列表,对应于ls.然后,您可以用来random.sample获取这些指数的20%,然后仅改变它们.
来自文档:
返回从总体序列中选择的独特元素的长度列表.用于无需更换的随机抽样.
In [816]: for _i in random.sample(range(len(ls)), len(ls) // 5):
...: ls[_i] = random.randint(1, 100)
...:
In [817]: ls
Out[817]: [1, 92, 3, 4, 5, 6, 7, 8, 75, 10]
Run Code Online (Sandbox Code Playgroud)