我有以下内容:
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个列表。 (那个措辞有点搞笑)
到目前为止,我从评论中猜测,我上面的内容会起作用。稍微调整其余的代码,就是这样。
答案 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]]