如何從列表中返回一個或多個項目?

2024-06-06 17:51:45 发布

您现在位置:Python中文网/ 问答频道 /正文

当前,我的代码返回客户机的名称和来自visit_length的随机值。我希望它返回客户机名称,然后返回visit_length中的一个或多个元素,即("Client 1", 15, 45), ("Client 2", 45, 60), ("Client 3", 30)

N = 20      
randomitems = []
visit_length = [15, 30, 45, 60]
value_range = np.arange(0, N, 1)

for i in value_range:
    visits = ("Client %d" % i, random.choice(visit_length))
    randomitems.append(visits)

有什么建议吗?我以为随机图书馆里可能有什么东西,但我还没有找到。你知道吗

谢谢你!你知道吗


Tags: 代码in名称client元素for客户机value
2条回答

更新答案返回元组

我可能误解了你想要什么,但我对这个问题的看法是: 我们创建一个函数,从列表x中返回任意数量的项(介于1-4=N之间),并按随机顺序返回它们。你知道吗

import random

def visits_func():
    N = random.randint(1, 4)
    x = [15, 30, 45, 60]
    y = []
    while N:
        y.append(x.pop(random.randrange(len(x))))
        N -= 1
    return y

value_range = range(1,6) #1,2,3,4,5,6

randomitems = []

for i in value_range:
    visits = tuple(["Client %d" % i] + sorted(visits_func()))
    randomitems.append(visits)

指纹,例如

[('Client 1', 15, 60),
 ('Client 2', 15),
 ('Client 3', 45, 60),
 ('Client 4', 30, 60),
 ('Client 5', 15, 30, 45)]

选择一个随机数k的项以^{}追加,然后从visit_length^{}中获取该数目的元素。你知道吗

import random
import numpy as np

N = 20
randomitems = []
visit_length = [15, 30, 45, 60]
value_range = np.arange(0, N, 1)

for i in value_range:
    k = random.randint(1, len(visit_length))
    visits = ("Client %d" % i,) + tuple(sorted(random.sample(visit_length, k=k)))
    randomitems.append(visits)

如果要允许重复项:

import random
import numpy as np

N = 20
MAX_VISIT_LENGTHS = 4  # You can choose as many as you want now I guess
randomitems = []
visit_length = [15, 30, 45, 60]
value_range = np.arange(0, N, 1)

for i in value_range:
    k = random.randint(1, MAX_VISIT_LENGTHS)
    vs = sorted(random.choice(visit_length) for _ in range(k))
    # If you do not want to sort use
    # vs = [random.choice(visit_length) for _ in range(k)]
    visits = ("Client %d" % i,) + tuple(vs)
    randomitems.append(visits)

相关问题 更多 >