我正在尝试将函数的输出绘制到列表中,以便将其绘制为图形。到目前为止,我的代码是
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]
我需要添加哪些代码才能获得此代码?
答案 0 :(得分:3)
您可以使用list comprehension或map()
来构建列表:
>>> 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()