如何删除Djang中每个列表值后面的“L”

2024-06-16 13:26:24 发布

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

我做了一个查询,从模型中获取所有字段值,并将结果存储在一个queryset中。

queryset=Books.objects.filter(book_type="comic")

现在,当我过滤这个queryset时:

query=queryset.filter(~Q(auther_id=1))
autherList=[]
for q in query:
    autherList.append(q.auther_id)
print autherList

它将列表打印为:

[3L, 4L, 9L, 13L, 53L, 53L, 102L, 111L, 111L, 111L, 111L] 

我的问题是:这意味着什么,以及如何删除它以获得一个简单的id列表。

我看了一下,但找不到任何关于这个的东西。


Tags: 模型id列表forobjectstypefilterquery
3条回答

L表示项属于long类型。

底层数据库库(mysql可能是?)正在创建long类型,同时从数据库中获取它们。所以它们是long而不是普通的int

可以使用int函数将它们转换为整数。

>>> lng_number = 23L

>>> int_num = int(lng_number)

>>> int_num
23

如果所有值都是long类型,则可以如下使用map

>>> long_list = [1L, 3L, 10L]

>>> int_list = map(int, long_list)

>>> int_list
[1, 3, 10]

>>>

这不是文本L,它表示数据类型long。它只是一个命令行表示,您不必担心它,因为它只会为您的模型id字段保存更多的数字。

我试过了,效果不错

>>> a = [3L, 4L, 9L, 13L, 53L, 53L, 102L, 111L, 111L, 111L, 111L] 
>>> b = map(int,a)
>>> b
[3, 4, 9, 13, 53, 53, 102, 111, 111, 111, 111]

但你不必担心,因为Python把它当作数字

>>> a = [3L, 4L, 9L, 13L, 53L, 53L, 102L, 111L, 111L, 111L, 111L] 
>>> b = [c*2 for c in a]
>>> b
[6L, 8L, 18L, 26L, 106L, 106L, 204L, 222L, 222L, 222L, 222L]

相关问题 更多 >