【问题标题】:How to select an integer randomly from a list containing integers as well as other objects?如何从包含整数以及其他对象的列表中随机选择一个整数?
【发布时间】:2016-06-27 09:06:47
【问题描述】:

我有一个清单

data=['_','_','A','B','C',1,2,3,4,5]

我需要在 1,2,3,4,5 中随机取一个整数 列表不断修改,所以我不能简单地从最后 5 个成员中选择

这是我尝试过的,但在检索其他成员时会引发错误:

inp2=int(random.choice(data))

【问题讨论】:

    标签: python list random


    【解决方案1】:

    您可以过滤非整数项;

    inp2 = ramdom.choice([x for x in data if isinstance(x, int)])
    

    【讨论】:

    • “列表不断修改,所以我不能简单地从最后 5 个成员中选择”
    • @user3650037 乐于助人:)
    【解决方案2】:

    虽然和Neo的回答差不多,但是你也可以试试这个:

    inp2 = random.choice(filter(lambda d: isinstance(d, int), data))
    

    【讨论】:

      【解决方案3】:

      创建最后 5 个元素的列表。

      >>> from random import choice
      >>> data=['_','_','A','B','C',1,2,3,4,5]
      >>> l = len(data)
      >>> data[(l-5):l]
      [1, 2, 3, 4, 5]
      >>> k = data[(l-5):l]
      >>> choice(k)
      5
      >>> choice(k)
      2
      >>> 
      

      【讨论】:

        【解决方案4】:
        random.choice([i for i in data[-5:] if isinstance(x, int)])
        

        通过isinstance()检查数据类型[-5:]更安全。

        【讨论】:

          【解决方案5】:

          试试这个。

          import operator
          inp2 = random.choice(filter(operator.isNumberType, data))
          

          对于这个特定的问题,选择最后 5 个元素也是一个很好的解决方案。

          inp2 = random.choice(data[5:])
          

          【讨论】:

          • 您的第一个解决方案将过滤数字类型,如intfloatlong 等。但此处 OP 只需要 int 类型。
          【解决方案6】:

          我认为最好的解决方案是创建另一个列表,其中只有您想从中选择的 int 值。 我不知道您指定的任务,但例如,如果您有添加到列表的方法,只需添加:

          def add(self, element):
             self.data.append(element)
             if type(element) == int:
                self.data_int.append(element)
          

          然后只需使用:

          def get_value(self):
             return random.choice(self.data_int)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-08-08
            • 2023-03-08
            • 2020-10-04
            • 2013-01-16
            • 1970-01-01
            • 2017-03-11
            • 1970-01-01
            • 2015-05-12
            相关资源
            最近更新 更多