Python 如何从列表中获取项目>;比X

Python 如何从列表中获取项目>;比X,python,python-3.x,Python,Python 3.x,我有一个名为“first_function()”的函数,它返回一个类的100个实例的列表。 然后我想定义第二个函数,它将创建一个新列表,其中包含从第一个函数()的输出列表中获取的随机实例,类似于: first_funtion() def second_function(list2, N): list2 = list2(random.choice(first_function())) 问题是我希望list2总是大于N,所以如果N=5,我希望随机list2大于5个实例。如果N=10,那么

我有一个名为“first_function()”的函数,它返回一个类的100个实例的列表。 然后我想定义第二个函数,它将创建一个新列表,其中包含从第一个函数()的输出列表中获取的随机实例,类似于:

first_funtion()

def second_function(list2, N):
    list2 = list2(random.choice(first_function()))
问题是我希望list2总是大于N,所以如果N=5,我希望随机list2大于5个实例。如果N=10,那么我希望列表中有10个以上的实例


如何操作?

您可以首先使用
first\u函数创建列表,然后在
N
和列表长度之间绘制一个随机整数,然后从列表中绘制一个随机样本

import random

def second_function(list2, N):
    len_list = len(list2)
    length = random.randint(N, len_list)
    return random.sample(list2, length)

您可以首先使用
first\u函数
创建列表,然后在
N
和列表长度之间的范围内绘制一个随机整数,然后从列表中绘制一个随机样本

import random

def second_function(list2, N):
    len_list = len(list2)
    length = random.randint(N, len_list)
    return random.sample(list2, length)
由于
random.choice()
函数总是从列表中选取一个元素,因此您可以在列表中迭代N次以上,每次都使用
random.choice()
。您还可以使用
random.randint()
获得N以上的随机数,用于
for
循环的范围函数

import random

def second_function(list2, N):
    for i in range(N,random.randint(N,len( first function() ))) :
        list2.append(random.choice(first_function()))
    return list2
由于
random.choice()
函数总是从列表中选取一个元素,因此您可以在列表中迭代N次以上,每次都使用
random.choice()
。您还可以使用
random.randint()
获得N以上的随机数,用于
for
循环的范围函数

import random

def second_function(list2, N):
    for i in range(N,random.randint(N,len( first function() ))) :
        list2.append(random.choice(first_function()))
    return list2

你可以用两个随机函数

  • 使用第一个选项从列表1的不包括N到包括长度的范围中选择N的值,即,(N,len(列表1)]

  • 并使用第二个选项从列表_1中选择x值的数量

因此,代码将如下所示:

import random

def second_function(list1, N):
   x = random.randint(N+1, len(list1))
   y = random.choices(list1, k=x)
   print(y)
此处
randint(开始,停止)
在生成随机整数时同时包含开始数和停止数。它将从包含的范围生成一个随机数

random.choices()
函数返回任意列表中随机项的总数k

注意:如果使用的是
random.choices()
,则可能会得到重复值。因此,如果要从列表中选择多个随机项而不重复,请使用
random.sample()
函数


您可以访问链接并探索与此相关的更多信息。

您可以使用两个随机函数

  • 使用第一个选项从列表1的不包括N到包括长度的范围中选择N的值,即,(N,len(列表1)]

  • 并使用第二个选项从列表_1中选择x值的数量

因此,代码将如下所示:

import random

def second_function(list1, N):
   x = random.randint(N+1, len(list1))
   y = random.choices(list1, k=x)
   print(y)
此处
randint(开始,停止)
在生成随机整数时同时包含开始数和停止数。它将从包含的范围生成一个随机数

random.choices()
函数返回任意列表中随机项的总数k

注意:如果使用的是
random.choices()
,则可能会得到重复值。因此,如果要从列表中选择多个随机项而不重复,请使用
random.sample()
函数


您可以访问链接并探索与此相关的更多内容。

您可以使用替换进行采样,这意味着元素可以多次出现在
list2
中。我不清楚这个问题。您希望list2包含从第一个列表中随机选择的>N个元素。您说“我希望list2始终大于N”,但是y您不指明元素数的上限是多少。是否希望列表2中的元素数在
N+1
len(list1)
之间随机出现(其中
list1
first\u function()返回的列表)?您可以使用进行替换抽样,这意味着一个元素可以多次出现在
list2
中。我不清楚这个问题。您希望list2由从第一个列表中随机选择的>N个元素组成。您说“我希望list2始终大于N”,但您没有指出元素数的上限nts是。是否希望列表2中的元素的随机数介于
N+1
len(list1)
之间(其中
list1
first\u function()
返回的列表)?如果我正确理解了问题,那么这应该是
length=random.randint(N+1,len\u list)
因为OP说他们希望'list2始终大于N'个实例。如果我理解正确,那么这应该是
length=random.randint(N+1,len_list)
因为OP说他们希望'list2始终大于N'个实例。