【问题标题】:Randomly distribute numbers to lists将数字随机分配到列表
【发布时间】:2018-11-05 22:04:36
【问题描述】:

我有 4 个空列表。 我想从1开始随机分配数字,直到列表中所有数字的总和超过1000。

这是我试过的代码:

toplam=0
x=0
while toplam<1000:
    x+=1
    toplam+=x
a=[]
b=[]
c=[]
d=[]
list=[a,b,c,d]
z=[1,2,3,4]
import random
for i in range(x):
    t=random.choice(z)
    t2=list[t]
    t2.append(x)
print(list)

我想要:

[[2, 6, 8, 18, 20, 21, 28, 40, 43], [1, 5, 19, 23, 24, 25, 29, 31, 33, 34, 35, 37, 39, 45], [9, 10, 11, 13, 15, 22, 26, 36, 38, 44], [3,
4、7、12、14、16、17、27、30、32、41、42]]

列表总和:

[186、380、224、245]

【问题讨论】:

  • 1. z 不包含list 中列表的索引,索引从零开始。 2. 为什么不直接从list 制作一个random.choice? 3. 不要在自己的代码中使用名称list,它会影响内置类型。 4. minimal reproducible example 应该包含实际输出。
  • 如果我回顾您的 4 个问题(其中 1 个由我回答),在我看来,您正在通过为您的任务提供一些稍微相关的代码来参加某种“学习 python 轨道”课程千疮百孔的SO。如果不是这种情况,我很抱歉——如果你这样做了——停止它。这是您被告知使用list 作为变量名的第三个问题,它是今天的第二个“随机事物”问题 - 您可以使用提供的内容来解决stackoverflow.com/questions/53161460/… 并应用它这个问题 - 你没有。
  • @PatrickArtner 我想我被误解了。在某种程度上你是对的,但我是 python 新手,我正在努力提高自己。我看到你写的答案并试图申请。不幸的是我学得不是很快。感谢您的支持和警告。此致,

标签: python-3.x list random


【解决方案1】:

python 中的索引从 0 开始。

import random

vals = [[] for _ in range(4)]
x = 0

while (x * (x + 1)) / 2 < 1000:
    t = random.randint(0,3)
    vals[t].append(x)
    x+=1

print(vals)

【讨论】:

    猜你喜欢
    • 2022-06-11
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多