我尝试使用以下代码将sqlite3
记录转换为列表,但结果以这种方式输出
[[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]
答案 0 :(得分:0)
每行fetchall
返回的都是一个元组,其中SELECT
中的每个属性都相应地建立了索引,所以:
result = [i[0] for i in rows]
i[0]
将是POINT
列。
或尝试使用迭代器形式:
for row in c.execute('SELECT POINT FROM loyalty'):
print(row[0])
答案 1 :(得分: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]
使用列表属性(总和)之一
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]