如何从列表中随机选择一个元组?

时间:2016-12-10 22:26:18

标签: python list python-3.x random

我从两个元组中随机创建一个元组列表,如下所示:

tuple1 = ('green','yellow','blue','orange','indigo','violet')
tuple2 = ('tree',2,'horse',4,6,1,'banana')

mylist = [(t1,t2) for item1 in tuple1 for item2 in tuple2]

当然给了我类似的东西:

[('green','tree'),('yellow', 2)]等等。

但是,我想随机从生成的mylist中选择一个两项目元组。换句话说,返回('green',2)

之类的内容

如何从列表中随机选择一个两项目元组?我尝试了以下方法,但它不起作用:

my_single_tuple = random.choice(mylist.pop())

我很感激任何线索或建议。

[编辑]我目前还不清楚目标:我想从列表中删除(弹出)随机选择的元组。

3 个答案:

答案 0 :(得分:3)

如果你想选择一个元组然后将其删除,只需获取索引并在之后将其删除。

var first = function() {
  this.loc = '1';
  this.test = function() {
    console.log('first ' + this.loc);
  }
}

var second = function() {
  var me = this;

  this.loc = '2';
  this.test = function() {
    console.log('second ' + this.loc);
    Object.getPrototypeOf(me).test.call(me);
  }
}

second.prototype = new first();

var third = function() {
  var me = this;

  this.loc = '3';
  this.test = function() {
    console.log('third ' + this.loc);
    Object.getPrototypeOf(me).test.call(me);
  }
}

third.prototype = new second();
third.prototype.loc = 3;

var t = new third();
t.test();

答案 1 :(得分:2)

如果你需要多次这样做,只需将列表洗牌一次,然后从前面弹出项目:

random.shuffle(mylist)
mylist.pop()
mylist.pop()

答案 2 :(得分:1)

我想我找到了一个有效的答案:

my_item = mylist.pop(random.randrange(len(mylist)))

这成功地从列表中给了我一个随机元组。谢谢@ philipp-braun,你的回答非常接近,但对我来说并不适用。