我从两个元组中随机创建一个元组列表,如下所示:
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())
我很感激任何线索或建议。
[编辑]我目前还不清楚目标:我想从列表中删除(弹出)随机选择的元组。
答案 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,你的回答非常接近,但对我来说并不适用。