我正在练习将itertool.accumulate
函数与一些循环和if一起使用。作为结果,我想一个单一的数字(变量称为“调用”)和每个周期的总和,这是3的列表。你知道吗
现在,我已经设法得到两个名单,但不是在同一时间。我的意思是,一旦一个列表被打印出来,它就会变成空的。我错过什么了吗?如何打印这两个列表?你知道吗
我要把这两个代码的输出都贴出来,让你明白我的意思。你知道吗
第一个代码:仅打印单个值
import random as rnd
import itertools
# variables
a = 5
b = int(1)
########
calls = (
tuple((itertools.accumulate(
a if a > rnd.randint(1, 10) else -a
for i in range(b)
for j in range(2))
)
)
for cycle in range(3)
)
#######
print(list(calls))
print(list(sum(call) for call in calls))
[(5, 0), (-5, -10), (5, 0)]
[]
第二个代码:它只打印值之和 随机导入为rnd 导入itertools
# variables
a = 5
b = int(1)
########
calls = (
tuple((itertools.accumulate(
a if a > rnd.randint(1, 10) else -a
for i in range(b)
for j in range(2))
)
)
for cycle in range(3)
)
#######
print(list(sum(call) for call in calls)
print(list(calls))
[5, -15, 5]
[]
最简单的解决方案:直接将其转换为
list
:问题是,在使用时创建generator expression (PEP 289):
生成器表达式不能重用,它们是用于延迟一次性计算的。你知道吗
您也可以使用列表理解
[ ... ]
而不是( ... )
:相关问题 更多 >
编程相关推荐