您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从列表中弹出随机元素的最Python方式是什么?

从列表中弹出随机元素的最Python方式是什么?

首先,您似乎想要做的看起来不太像Pythonic。您不应该从列表的中间删除内容,因为列表在我所知道的所有Python实现中都是作为数组实现的,因此这是一项O(n)操作。

如果您确实需要将此功能作为算法的一部分,则应检出blist支持从中间高效删除的数据结构,例如。

在纯Python中,如果不需要访问其余元素,该怎么办就是先将列表随机播放,然后对其进行遍历:

lst = [1,2,3]
random.shuffle(lst)
for x in lst:
  # ...

如果您 确实需要 其余部分(有点代码味道,恕我直言),至少您现在可以pop()从列表末尾开始(快!):

while lst:
  x = lst.pop()
  # do something with the element

通常,如果您使用更具功能性的样式而不是改变状态(如对列表进行操作),则通常可以更优雅地表达程序。

python 2022/1/1 18:38:48 有268人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶