Python - 以非线性方式运行循环

obe*_*aum 4 python for-loop list

所以,我正在寻找一种以循环方式循环遍历项目列表的方法,除了我希望循环以"随机"方式迭代.即我不希望循环进入0,1,2,3,m + 1 ... n,我希望它以一些随机顺序选择它并仍然运行所有项目的循环.

这是我目前的循环代码:

for singleSelectedItem in listOfItems:
  item = singleSelectedItem.databaseitem
  logging.info(str(item))    
Run Code Online (Sandbox Code Playgroud)

如果这没有意义,请告诉我;)

cly*_*ish 9

如果listOfItems可以改组,那么

import random
random.shuffle(listOfItems)
for singleSelectedItem in listOfItems:
    blahblah
Run Code Online (Sandbox Code Playgroud)

除此以外

import random
randomRange = range(len(listOfItems))
random.shuffle(randomRange)
for i in randomRange:
    singleSelectedItem = listOfItems[i]
    blahblah
Run Code Online (Sandbox Code Playgroud)

编辑Jochen Ritzel在评论中的更好方法.
否则部分可以

import random
for item in random.sample(listOfItems, len(listOfItems))
    blahblah
Run Code Online (Sandbox Code Playgroud)