Создайте список с шестью подсписками случайных чисел

#python #python-3.x

#python #python-3.x

Вопрос:

Я совершенно новичок в Python; однако я хотел бы составить список из 6 вложенных списков, каждый из которых содержит 4 случайных значения между 0 и 30 .

Ответ должен быть напечатан следующим образом:

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

Комментарии:

1. Не называйте свою собственную переменную list — она затеняет встроенную. Что вы пробовали до сих пор и что получилось? Вы заглядывали в random модуль ?

2. Я понимаю, как использовать random, однако я просто не могу понять, как создать список внутри списка, кстати, большое вам спасибо за ответ 🙂

3. Вы можете добавить список в список, как и все остальное: lst.append([1, 2])

Ответ №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))