use*_*093 8 python random sublist
我有一个python字典如下:
{'APPLE_PROVIDERS' : ["some", "provider","can","be", "null"],
....
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是从密钥的列表(这是一个值)中获取一个随机子列表.不仅仅是一个元素,而是一个完全随机的子列表.这是我尝试过的:
a_list = a_dict.get('APPLE_PROVIDERS', "")
for item in a_list[randrange(0,len(a_list)) : randrange(0,len(a_list))]:
...do something..
Run Code Online (Sandbox Code Playgroud)
这件事有两个问题:
如果列表为空,或者dict查找失败,程序将失败,因为randrange有(0,0)作为参数,这会导致错误
很多时候,两个randrange()调用都会生成相同的数字,尤其是当列表很小时.这将返回一个空列表.例如a_list [5:5]
那么,处理上述案例的随机子列表的最佳方法是什么?另外,我不关心订购.一切正常.每次for循环开始时,我只想要一个完全随机的子列表0,1 ...直到len(a_list)元素.
如果列表可以在其他一些可以容纳类似元素的数据结构中进行更改,那么这对我也有用.
Ign*_*ams 18
取样吧.
>>> random.sample(["some", "provider", "can", "be", "null"], 3)
['some', 'can', 'provider']
>>> random.sample(["some", "provider", "can", "be", "null"], 3)
['can', 'null', 'provider']
>>> random.sample(["some", "provider", "can", "be", "null"], 3)
['null', 'some', 'provider']
Run Code Online (Sandbox Code Playgroud)
>>> from random import randint
>>> left = randint(0, len(L))
>>> right = randint(left, len(L))
>>> L[left:right]
['null']
Run Code Online (Sandbox Code Playgroud)
如果您不希望出现空列表
>>> left = randint(0, len(L) - 1)
>>> right = randint(left + 1, len(L))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8874 次 |
| 最近记录: |