将sqlite3记录转换为lis

2024-04-29 16:14:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用下面的代码将sqlite3记录转换为list,但结果是这样输出的

[[1000], [1199], [1400], [1213], [1500], [1800], [1308]]

但我希望结果显示为:

[1000, 1199, 1400, 1213, 1500, 1800, 1308]

list中的数字中删除list

conn = sqlite3.connect("TEST1.db")
cur = conn.cursor()
cur.execute("SELECT POINT FROM loyalty")
rows = cur.fetchall()

result = [list(i) for i in rows]

print(result)

我试着用这种方法迭代结果

for row in rows:
    print(list(row))

它以这种方式输出

[1000]
[1199]
[1400]
[1213]
[1500]
[1800]
[1308]

Tags: 代码infor记录数字resultconnsqlite3
2条回答

每一行fetchall返回的是一个元组,其中SELECT中的每个属性都相应地被索引,因此:

result = [i[0] for i in rows]

其中i[0]将是POINT

或者尝试迭代器形式:

for row in c.execute('SELECT POINT FROM loyalty'):
        print(row[0])

有多种方法可以得到预期的结果

即使子列表的长度为奇数,也可以使用以下方法

行=[[1000],[1199],[1400],[1213],[1500],[1800],[1308]]

最简单的方法

endResult = []
for item in rows:
    for subItem in item:
        endResult.append(subItem)
print(endResult)

输出:[1000、1199、1400、1213、1500、1800、1308]

另一种解决方法:

import itertools
rows = [[1,2,3],[4,5,6], [7], [8,9]]
endResult = list(itertools.chain.from_iterable(rows))
print(endResult)

输出:[1,2,3,4,5,6,7,8,9]

使用列表属性之一(sum)

endResult = sum(rows, [])
print(endResult)

输出:[1,2,3,4,5,6,7,8,9]

使用lambda表达式

endResult = reduce(lambda x,y: x+y,rows)
print(endResult)

输出:[1,2,3,4,5,6,7,8,9]

相关问题 更多 >