【问题标题】:Python sample and remove item from list [duplicate]Python示例并从列表中删除项目[重复]
【发布时间】:2019-01-25 18:10:07
【问题描述】:

是否有一个命令可以随机抽取列表中的项目并将其删除? 假设命令名为 cmd,我想要类似的东西?

l = [1,2,4,6]
r = cmd(l)
r = 4
l = [1,2,6]

【问题讨论】:

    标签: python python-3.x list random


    【解决方案1】:

    使用random.randint 获取随机索引并使用pop 从列表中获取具有该索引的元素

    >>> import random
    >>> l = [1,2,4,6]
    >>> idx = random.randint(0, len(l)-1)
    >>> r = l.pop(idx)
    >>> r
    4
    >>> l
    [1, 2, 6]
    

    【讨论】:

    • 几乎...randint() 包括结束编号,所以如果选择len(l) - 这将是一个无效的索引并导致IndexError 弹出尝试...你想要random.randrange(len(l))
    • 哈哈...感谢您的解释.. 更新了答案
    • 我想你可以这样做......但是randint 调用randrange(a, b+1) 所以你不妨直接调用randrange :)
    【解决方案2】:

    你可以试试这个:l.pop(random.randint(0, len(l)))

    附言抱歉,忘记随机了

    【讨论】:

      【解决方案3】:

      使用random.shufflepop 从列表中随机播放:

      import random
      
      lst = [1, 2, 4, 6]
      random.shuffle(lst)
      r = lst.pop()
      
      print(r)    # 4
      print(lst)  # [1, 2, 6]
      

      【讨论】:

        【解决方案4】:

        我能想到的最简单的方法是使用shuffle() 随机化列表中的元素位置,然后在需要时使用pop()

        >>> from random import shuffle
        >>> shuffle(l)
        >>> l.pop()
        

        #driver 值:

        IN : l = [1,2,4,6]
        OUT : 4
        

        来自 PyDocs:

        random.shuffle(x[, random])

        Shuffle the sequence x in place.
        

        【讨论】:

          【解决方案5】:

          使用模块random 中的函数choice 并使用remove 从列表中删除项目。

          >>> from random import choice as get
          >>> l = [1,2,3,4,6]
          >>> r = get(l)
          >>> r
          3
          >>> l.remove(r)
          >>> l
          [1, 2, 4, 6]
          

          简而言之:

          from random import choice as get
          l = [1,2,3,4,6]
          r = get(l)
          l.remove(r)
          

          【讨论】:

            猜你喜欢
            • 2011-09-29
            • 2013-08-03
            • 1970-01-01
            • 2016-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-26
            相关资源
            最近更新 更多