已发布与同一问题相关的几个问题,但未找到问题的解决方案。我想把我的循环(2000浮动列表)的输出放到python列表中。我得到“变量非可迭代错误”,因为我没有设法以正确的方式调用输出的每个元素来写入列表。
其他尝试,比如转换到循环内的列表,给我一个每个元素的列表,当我只需要一个包含所有元素的列表时。
这是我的代码:
for i in range(x):
timedelta= (function(i)) #datetime.timedelta elements
pos_time = (i, function(i)) #tuple of an integer and a float
time = pos_time[1]
print time
如果我在这里完成,我会得到我需要的值列表:
3.5
2.04
6.6
4.02
...
如果我继续循环:
times = []
for time in range(x):
times.append(time)
然后我从连续值中得到一个列表,而不是循环的输出。 我需要的是如下列表:
times = [3.5,2.04,6.6,4.02]
非常感谢你的帮助。
答案 0 :(得分:2)
第二次尝试时(“如果我继续循环”),你非常接近,只需添加函数调用:
times = []
for time in range(x):
times.append(function(time))
此外,您可能希望查看map()函数以直接构建函数结果列表:
map(function, range(x))
答案 1 :(得分:1)
times = [function(i) for i in range(x)]
答案 2 :(得分:1)
不是打印,而是附加到时间列表:
times = []
for i in range(x):
time= (function(i))
pos_time = (i, function(i))
time = pos_time[1]
# print time
times.append(time)
我不确定我是否理解你在for-loop中想要做的事情:
time= (function(i))
与
相同time = function(i)
即。使用循环变量作为参数调用function
。
pos_time = (i, function(i))
创建一个i
循环变量元组和第二次调用function(i)
。
time = pos_time[1]
然后获取你创建的元组的第二个/最后一个值。
如果function(i)
每次使用i
调用时返回相同的值,您只需执行
times = []
for i in range(x):
time = function(i)
times.append(time)