从列表列表中随机选择X个列表

时间:2016-11-11 17:59:21

标签: python list python-3.x random

我有以下内容:

pen = [1, 2, 3, 4]
pencil = [2,3,4,5]
paper = [3,4,5,6]
group_of_items = [pen, pencil, paper]

我想从这个列表列表中随机选择一定数量的列表,以便结果如下:

[pencil, pen]

我从另一个问题中找到了以下内容(根据我的情况进行了修改)。

import random

pen = [1, 2, 3, 4]
pencil = [2,3,4,5]
paper = [3,4,5,6]

group_of_items = [pen, pencil, paper]

num_to_select = 2
list_of_random_items = random.sample(group_of_items, num_to_select)
print(list_of_random_items)

它给出了类似的东西。

[[2, 3, 4, 5], [1, 2, 3, 4]]

所以,它很接近,但没有雪茄。我也找到了这个。

import numpy as np

pen = [1, 2, 3, 4]
pencil = [2,3,4,5]
paper = [3,4,5,6]
group_of_items = [pen, pencil, paper]
num_to_select = 2

random_list = np.random.choice(group_of_items, num_to_select, replace=False)

print(random_list)

但它不适用于列表列表(多维)。

如何实现目标?

哦,我不想要任何重复。

注意:我的编码经验相当有限。我主要复制并粘贴我在网上找到的内容,只做了一些小改动。

编辑 :以上只是一个快速抛出的测试。我所建立的是一个使用PythonAnywhere的Twitter推文机器人。它的工作原理非常好,但我想为它添加一个更随机的功能。

我在Google电子表格中有推文列表,我将其移至Python列表中,如下所示:

quotes = tweet_sheet.col_values(3)

我有几个这样的列表,我把它放在一个列表的主列表中。但是,每次运行程序时,我都不想从每个列表中发推文。

现在我使用这样的东西。

sources = [tips,feed,quotes... etc...

我想从程序运行时使用的主列表列表中选择x个列表。 (那个措辞有点搞笑)

到目前为止,我从评论中猜测,我上面的内容会起作用。稍微调整其余的代码,就是这样。

2 个答案:

答案 0 :(得分:2)

这是一种使用词典的方法:

>>> pen = [1, 2, 3, 4]
>>> pencil = [2,3,4,5]
>>> paper = [3,4,5,6]
>>> item_dict = {'pen':pen, 'pencil':pencil, 'paper':paper}
>>> import random
>>> item_names = list(item_dict.keys())
>>> item_names
['pencil', 'pen', 'paper']
>>> sample = random.sample(item_names,2)
>>> sample
['pencil', 'pen']
>>> item_dict[sample[0]]
[2, 3, 4, 5]
>>> item_dict[sample[1]]
[1, 2, 3, 4]

所以现在你有字符串列表之间的关联:

>>> "The first list sampled was {}. Here's the list {}".format(sample[0], item_dict[sample[0]])
"The first list sampled was pencil. Here's the list [2, 3, 4, 5]"
>>> 

答案 1 :(得分:0)

如果您确实希望返回随机选择列表的列表,则可以使用python原生random.choices()

import random
pen = [1, 2, 3, 4]
pencil = [2,3,4,5]
paper = [3,4,5,6]
group_of_items = [pen, pencil, paper]
print(group_of_items)

sampling = random.choices(group_of_items, k=2)
print("sampling with choices() ", sampling)

输出:

[[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]
sampling with choices()  [[2, 3, 4, 5], [1, 2, 3, 4]]