Я изучаю Python и сейчас работаю над пониманием списка.Я делаю задачу, которая просит создать список списков из n элементов, где первый элемент в каждом внутреннем списке представляет свой индекс, следующие n-2 элемента являются случайными числами от 1 до 10, а последний элемент является суммойпредыдущие n-2 элементов, где значение было больше 5. Например, образец будет
[[0, 5, 10, 3, 10], [1, 7, 3, 7, 14], [2, 2, 9, 5, 9]]
Код, который я использовал для генерации вывода, был
import random
SUM = 0
def genRandNum():
global SUM
x = random.randint(1,10)
if(x > 3):
SUM = SUM + x
return x
def finalEle():
global SUM
ret = SUM
SUM = 0
return ret
INNER_LIST_SIZE = 5
OUTER_LIST_SIZE = 3
li = [[y if x == 0
else finalEle()if x == INNER_LIST_SIZE - 1
else genRandNum()
for x in range(INNER_LIST_SIZE)] for y in range(OUTER_LIST_SIZE)]
print(li)
Однакона языке, подобном Java, я склонен писать свой код следующим образом:
import random
SUM = 0
THRESHOLD = 5
INNER_LIST_SIZE = 5
OUTER_LIST_SIZE = 3
li = []
for y in range(OUTER_LIST_SIZE):
innerLi = []
for x in range(INNER_LIST_SIZE):
if x == 0:
innerLi.append(y)
elif x == INNER_LIST_SIZE-1:
innerLi.append(SUM)
else:
rand = random.randint(1,10)
innerLi.append(rand)
if rand > THRESHOLD:
SUM += rand
li.append(innerLi)
SUM = 0
print(li)
Какое из этих решений выглядит как лучший способ решения проблемы с точки зрения Python?Кто-нибудь из них на самом деле должен решить эту проблему, и если нет, то какие другие инструменты Python я мог бы использовать для этого?