如何在forloop过程中读取这些元组并转换int类型



我想在forloop期间将元组类型的数据更改为int类型。如何读取这些元组数据?(因为我想把这些数据转换成日期时间)

>>> print data
((1424794931452.0,), (1424794931645.0,), (1424794931821.0,),(1424794932014.0,), (1424794932189.0,))

我有5个元组数据(unixtime),这就是我想要做的

for i in data:
    con = int(data[i][0])
    dt = datetime.fromtimestamp(con // 1000)
    s = dt.strftime('%Y-%m-%d %H:%M:%S')
    print(s)

我认为那些元组数据是([0][0],[1][0],[2][0],[3][0],[4][0])对吧?

什么是问题?我不太了解蟒蛇。

您有一个包含单元素元组的元组。你可能想要这样的东西:

from datetime import datetime
data = ((1424794931452.0,), (1424794931645.0,), (1424794931821.0,),(1424794932014.0,), (1424794932189.0,))
for elem in data:
    con = int(elem[0])
    dt = datetime.fromtimestamp(con // 1000)
    s = dt.strftime('%Y-%m-%d %H:%M:%S')
    print(s)

输出:

2015-02-24 11:22:112015-02-24 11:22:112015-02-24 11:22:112015-02-24 11:22:122015-02-24 11:22:12

我认为问题在于I是数据中的元素,而不是索引。所以你应该这样做:

for i in data:
    con = int(i[0])
    dt = datetime.fromtimestamp(con // 1000)
    s = dt.strftime('%Y-%m-%d %H:%M:%S')
    print(s)

i已经是一个子元组,而不是data中的索引。所以这就足够了:

from datetime import datetime
data = ((1424794931452.0,), (1424794931645.0,), (1424794931821.0,),(1424794932014.0,), (1424794932189.0,))
for i in data:
    dt = datetime.fromtimestamp(i[0] // 1000)
    s = dt.strftime('%Y-%m-%d %H:%M:%S')
    print(s)    

结果是:

2015-02-25 00:22:11
2015-02-25 00:22:11
2015-02-25 00:22:11
2015-02-25 00:22:12
2015-02-25 00:22:12

在执行for x in y语法时,x在每次迭代中都被分配给序列的元素。要枚举索引,您必须使用内置函数enumerate,它同时返回索引和项。

我会这样做:

for con in (int(d[0]) for d in data):
    do_something_with(con)

最新更新