Function 将列表返回给函数

Function 将列表返回给函数,function,list-comprehension,Function,List Comprehension,上面的代码-正确打印2到25之间的100个随机数字,但向函数返回“无”。在下面的代码中,我如何将100个随机数字的列表返回给函数 import random def genList1(): list1 = [x for x in range(100)] count = 0 for count in list1: print(random.randint(2,25), end = " ") return def main(): p

上面的代码-正确打印2到25之间的100个随机数字,但向函数返回“无”。在下面的代码中,我如何将100个随机数字的列表返回给函数

import random

def genList1():
     list1 = [x for x in range(100)]
     count = 0
     for count in list1:
        print(random.randint(2,25), end = " ")
     return

def main():
    print(genList1())

main()
我尝试了一些不同的修改,例如在打印前添加返回到(随机…),以及尝试将打印(随机…)分配给一个变量,然后返回该变量…但没有效果

import random

def genList1(): 
    list1 = [x for x in range(100)]
    count = 0
    for count in list1:
        random.randint(2,25)
    return list1

def genList2():
    list1 = genList1()
    list2 = [x**2 for x in list1 if x % 2 == 0]
    return list2

def genList3():
    list2 = genList2()
    list3 = [0.5*x for x in list2]
    return list3

def genSum1_2():
    list2 = genList2()
    list3 = genList3()

    sum1 = 0
    number1 = 0
    for number1 in list2:
        sum1 = sum1 + number1

    sum2 = 0
    number2 = 0
    for number2 in list3:
        sum2 = sum2 + number2

    return sum1, sum2

def main():
    print("Here is List 1, which contains 100 random digits between 2 and 25: ")
    print(genList1())
    print(), print()
    print("Here is List 2, which is the cubes of all the even digits in List 1: ")
    print(genList2())
    print(), print()
    print("Here is List 3, which is all the digits in List 2 divided in half: ")
    print(genList3())
    print(), print()
    print("Here is the sum of the digits in List 2, and digits in List 3: ")
    print(genSum1_2())

main()
或者,如果您希望它的行为更像您的原始代码

import random

def getRandList():
    return [random.randint(2,25) for x in xrange(100)]

print getRandList()
编辑(解释以下评论中的问题):

如果你想重复使用列表中的随机数,你有几个选择

选项1:最佳选项 将列表作为参数传递给后续函数

import random

def genList1():
    randlist = [random.randint(2,25) for x in xrange(100)]
    for elem in randlist:
        print(elem, end = ' ')
    return randlist

def main():
    print(genList1())

main()
选项2:这将是糟糕的编程实践 如果您想成为团队中其他人不喜欢的开发人员,您可以经常这样做:

def genList2(input_list):
    list2 = [x**2 for x in input_list if x % 2 == 0]
    return list2

def main():
    list1 = genList1()
    list2 = genList2(list1)

如果我打印它,它会更改每个函数的列表…我如何调用最初生成的相同列表1???(参考具有多于1个功能的主代码)
def genList1():
    global randlist
    randlist = [random.randint(2,25) for x in xrange(100)]
    for elem in randlist:
        print(elem, end = ' ')
    return randlist

def genList2():
    list2 = [x**2 for x in randlist if x % 2 == 0]
    return list2

def main():
    list1 = genList1()
    list2 = genList2()