我有一个整数列表: l = [1,2,3,4]
对于此列表中的每个元素,我需要随机选择一个不同的元素并对其执行一些操作:
for i in range(len(l)):
idx = # a random index which is NOT equal to i
# do something with the element at idx
我对 Python 还是很陌生,无法确定是否有办法做到这一点,而无需求助于生成随机索引的循环,并且仅在随机数不等于i
. 任何建议将不胜感激。
怎么样:生成一个介于1 0
和N - 1
(N
在这种情况下是列表的长度)之间的随机数,然后在该数字等于或大于 时加一i
。
for i in range(len(l)):
idx = random.randrange(len(l) - 1)
idx = idx + 1 if idx >= i else idx
# do stuff with idx
这样,上面滚动的所有数字都会i
“向上移动”:
0 i N
before *****************
after ******* **********
或者,在一个单一的线,你可以生成之间的数字1 i + 1
和N + i
,并采取数模N
,有效列表结束后周围包裹它:
idx = random.randrange(i + 1, len(l) + i) % len(l)
0 i N
before *****************
after ******* **********
1)这里的意思是包括下限和不包括上限,使用randrange
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句