在Python中选择长度为n的随机列表元素
我知道您可以使用random.choice从列表中选择一个随机元素,但我正在尝试选择长度为3的随机元素。比如说,在Python中选择长度为n的随机列表元素,python,random,Python,Random,我知道您可以使用random.choice从列表中选择一个随机元素,但我正在尝试选择长度为3的随机元素。比如说, list1=[a,b,c,d,e,f,g,h] 我希望输出看起来像: [c,d,e] 基本上,我想从列表中生成随机子列表。您想要一个样本;用于选择包含3个元素的列表: random.sample(list1, 3) 演示: 如果您需要一个子列表,则必须选择一个介于0和长度减3之间的随机起始索引: def random_sublist(lst, length): star
list1=[a,b,c,d,e,f,g,h]
我希望输出看起来像:
[c,d,e]
基本上,我想从列表中生成随机子列表。您想要一个样本;用于选择包含3个元素的列表:
random.sample(list1, 3)
演示:
如果您需要一个子列表,则必须选择一个介于0和长度减3之间的随机起始索引:
def random_sublist(lst, length):
start = random.randint(len(lst) - length)
return lst[start:start + length]
其工作原理如下:
>>> def random_sublist(lst, length):
... start = random.randint(len(lst) - length)
... return lst[start:start + length]
...
>>> random_sublist(list1, 3)
['d', 'e', 'f']
如果只需要原始列表的随机子集,则可以使用
import random
random.sample(your_list, sample_size)
但是,如果希望子列表是连续的(如您给出的示例),则最好选择两个随机索引并相应地对列表进行切片:
a = random.randint(0, len(your_list) - sample_length)
sublist = your_list[a:b+sample_length]
如果希望结果环绕到列表的开头,可以执行以下操作:
idx = randint(0, len(list1))
(list1[idx:] + list1[:idx])[:3]
你想要3个连续的元素还是3个随机的元素?3个连续的元素我想他想要一个连续的子列表,举个例子。是的,我应该指定我想要一个连续的子列表。这给出了随机长度的列表。@MartijnPieters-Oops!误读了这个问题。更正,谢谢!哇,应该想到这个。一个非常简单的解决方案!
a = random.randint(0, len(your_list) - sample_length)
sublist = your_list[a:b+sample_length]
idx = randint(0, len(list1))
(list1[idx:] + list1[:idx])[:3]