我正在学习python,现在正在学习列表理解。我正在做一个问题,要求生成一个n个元素的列表,其中每个内部列表中的第一个元素表示其索引,下一个n-2元素是介于1和10之间的随机数,最后一个元素是值大于5的前n-2元素的和。例如,一个样本
[[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工具来处理这个问题?