如何将输出转换为列表?

时间:2016-04-12 22:21:08

标签: python list plot

我正在尝试将函数的输出绘制到列表中,以便将其绘制为图形。到目前为止,我的代码是

t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def anninos():
    for time in t:
        tfac = math.factorial(time)
        print(tfac)
anninos()

我得到的输出是

1
2
6
24
120
720
5040
40320
362880
3628800

但我想要的输出是

[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]

我需要添加哪些代码才能获得此代码?

4 个答案:

答案 0 :(得分:3)

您可以使用list comprehensionmap()来构建列表:

>>> import math
>>> t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [math.factorial(time) for time in t]
[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
>>> list(map(math.factorial, t))
[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]

然后您可以从功能中返回列表或打印它。

答案 1 :(得分:1)

您可以使用yield代替print而使用print(list(anninos()))代替anninos()。您还可以构建一个列表并附加到它:

def anninos():
    result = []
    for time in t:
        result.append(math.factorial(time))
    print(result)

每当你有一个只创建相同内容列表的循环时,你可以使用list comprehension

def anninos():
    print([math.factorial(time) for time in t])

答案 2 :(得分:1)

您需要使用yield或不使用funtion。你甚至不使用函数的返回 - 为什么使用函数?:

import math

t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def anninos(values_list):
    for time in values_list:
        yield math.factorial(time)

print list(anninos(t))

答案 3 :(得分:0)

t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def anninos():
    out = []
    for time in t:
        tfac = math.factorial(time)
        out.append(tfac)
    print(out)
anninos()