Py学习  »  Python

在依赖于前面元素的python中创建列表

mradey • 6 年前 • 1833 次点击  

我正在学习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工具来处理这个问题?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38909
 
1833 次点击  
文章 [ 4 ]  |  最新文章 6 年前