将可迭代变量从循环写入python列表

时间:2013-12-15 17:49:13

标签: python list

已发布与同一问题相关的几个问题,但未找到问题的解决方案。我想把我的循环(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]

非常感谢你的帮助。

3 个答案:

答案 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)