Python - 以非线性方式循环执行
所以,我在寻找一种方法,可以像用for循环那样遍历一个项目列表,但我希望这个循环是以“随机”的方式进行的。也就是说,我不想让循环按顺序走0,1,2,3,...n,我想让它以某种随机的顺序来选择,并且仍然能遍历所有的项目。
这是我目前的循环代码:
for singleSelectedItem in listOfItems:
item = singleSelectedItem.databaseitem
logging.info(str(item))
如果这段话不太明白,请告诉我;)
4 个回答
1
在编程中,有时候我们需要把一些代码放在一起,这样可以让代码更整洁,也更容易管理。比如说,如果你有一段代码需要重复使用,或者你想把一些功能分开处理,这时候就可以用“函数”来帮忙。函数就像一个小工具箱,你可以把常用的工具放进去,想用的时候直接拿出来用就行了。
当你定义一个函数时,你可以给它起个名字,这样在需要的时候就可以通过这个名字来调用它。这样不仅可以减少重复的代码,还能让你的程序看起来更清晰。
另外,函数还可以接收一些输入,这些输入叫做“参数”。你可以把不同的参数传给函数,让它根据这些参数来做不同的事情。就像你给一个厨师不同的食材,他可以做出不同的菜。
总之,函数是编程中非常重要的一个概念,它能帮助你更好地组织代码,让你的程序更高效、更易于维护。
import random
random.shuffle(listOfItems)
for singleSelectedItem in listOfItems:
item = singleSelectedItem.databaseitem
logging.info(str(item))
1
如果性能不是特别重要,你可以简单地打乱你的项目顺序。或者,如果这些项目必须保持原来的顺序,你可以先创建一个所有索引的列表,然后打乱这个索引列表。比如说,你可以用这样的代码:indizes = range(len(listOfItems)),然后用 random.shuffle(indizes) 来打乱索引。
9
如果 listOfItems 可以被打乱,那么
import random
random.shuffle(listOfItems)
for singleSelectedItem in listOfItems:
blahblah
否则
import random
randomRange = range(len(listOfItems))
random.shuffle(randomRange)
for i in randomRange:
singleSelectedItem = listOfItems[i]
blahblah
根据 Jochen Ritzel 在评论中提到的更好的方法进行编辑。
否则的部分可以是
import random
for item in random.sample(listOfItems, len(listOfItems))
blahblah