【问题标题】:Create a list with six sublists of random numbers创建一个包含六个随机数子列表的列表
【发布时间】:2014-06-17 14:43:02
【问题描述】:

我对 Python 完全陌生;但是,我想列出 6 个子列表,每个子列表包含 030 之间的 4 个随机值。

答案应该是这样的:

   lst[0] = [1,4,4,5]
   lst[1] = [23,14,5,8]
   ...
   lst[5] = [8,9,18,27]

【问题讨论】:

  • 不要将自己的变量命名为list - 它会影响内置变量。到目前为止,您尝试了什么,发生了什么?你看过random module吗?
  • 我确实了解如何使用随机数,但是我无法弄清楚如何在列表中创建列表,顺便说一句,非常感谢您的回答:)
  • 您可以像其他任何方式一样将列表附加到列表中:lst.append([1, 2])

标签: python python-3.x


【解决方案1】:

这是完成它的简单单行:

from random import randint

rand_list = [[randint(0, 30) for i in range(4)] for n in range(6)]
>>>rand_list
[[28, 17, 5, 9],
[27, 29, 3, 8],
[18, 13, 4, 11],
[15, 12, 11, 19],
[17, 8, 22, 30],
[24, 6, 9, 1]]

如果您想变得花哨,可以轻松地将其扩展为一个函数,该函数允许您将列表大小指定为函数的输入:

def rand_lists(num_lists, num_vals):
    return [[randint(0, 30) for i in range(num_vals)] for n in range(num_lists)]


>>> rand_lists(2, 7)
[[17, 8, 29, 2, 9, 26, 16],
 [24, 22, 5, 10, 11, 0, 10]]

【讨论】:

    【解决方案2】:

    对于单行:

    from random import randint
    lst = [[randint(0, 30) for col in range(4)] for row in range(6)]
    

    相当于(在纯python中):

    lst = []
    for row in range(6):
        r = []
        lst.append(r)
        for col in range(4):
            r.append(randint(0, 30))
    

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多