Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中扩展没有空项的列表_Python_Django_List - Fatal编程技术网

如何在python中扩展没有空项的列表

如何在python中扩展没有空项的列表,python,django,list,Python,Django,List,我使用如下查询集扩展列表: a_objs = MyModelOne.objects.filter(name__icontains=term) b_objs = MyModelTwo.objects.filter(name__icontains=term) l = [] l.extend( (list(a_objs), list(b_objs)) ) 但是由于a_objs是空的,所以我得到了一个列表列表:[[],[]] 我怎样才能以一种冷静的方式避免这些空列表呢?:) 要过滤掉错误(如空列表

我使用如下查询集扩展列表:

a_objs = MyModelOne.objects.filter(name__icontains=term)
b_objs = MyModelTwo.objects.filter(name__icontains=term)


l = []
l.extend( (list(a_objs), list(b_objs)) )
但是由于
a_objs
是空的,所以我得到了一个列表列表:
[[],[]]

我怎样才能以一种冷静的方式避免这些空列表呢?:)

要过滤掉错误(如空列表),
no\u falsies=filter(None,To\u filter)

要过滤掉错误(如空列表),
no\u falsies=filter(None,To\u filter)


你真的需要列表吗?为什么不使用源列表的结果扩展目标列表呢?如果您尝试添加一个空列表,这将不会产生任何副作用

a_objs = []
b_objs = ['hello', 'world']

l = []
l.extend(a_objs)
l.extend(b_objs)

print l

你真的需要列表吗?为什么不使用源列表的结果扩展目标列表呢?如果您尝试添加一个空列表,这将不会产生任何副作用

a_objs = []
b_objs = ['hello', 'world']

l = []
l.extend(a_objs)
l.extend(b_objs)

print l

list.extend
只接受一个参数,该参数作为2元组提供。这本身就被列入了一个名单,所以这是你的问题

>>> l = []
>>> l.extend((list(''), list('def')))
>>> l
[[], ['d', 'e', 'f']]
现在,如果您想将多个列表连接在一起,您可以使用
itertools.chain
来完成这项工作

>>> list(itertools.chain(list(''), list('def')))
['d', 'e', 'f']

list.extend
只接受一个参数,该参数作为2元组提供。这本身就被列入了一个名单,所以这是你的问题

>>> l = []
>>> l.extend((list(''), list('def')))
>>> l
[[], ['d', 'e', 'f']]
现在,如果您想将多个列表连接在一起,您可以使用
itertools.chain
来完成这项工作

>>> list(itertools.chain(list(''), list('def')))
['d', 'e', 'f']


首先,您用一个空列表覆盖列表类型。他想说的是,您不应该使用“list”作为名称,因为它是内置类型。@JayanthKoushik噢,谢谢您的提示。首先,你用一个空列表覆盖列表类型。他想说的是,你不应该使用“列表”作为名称,因为它是内置类型。@JayanthKoushik噢,谢谢你的提示。最好首先避免在列表中添加“Falsie”,而不是在以后添加和删除它们。同意。不过,这仍然是一个有效的选择。我发现它非常清晰/具有人类可读的价值。@Yuji'Tomita'Tomita是的,这是非常好和清晰的。谢谢,曼妮,最好不要在一开始就把“谎言”添加到列表中,而不要在以后再添加和删除它们。同意。不过,这仍然是一个有效的选择。我发现它非常清晰/具有人类可读的价值。@Yuji'Tomita'Tomita是的,这是非常好和清晰的。感谢使用
l
作为变量名通常也被认为是不好的做法,因为它很容易与
I
1
(我在这里违反了这一点),但比重写内置类型要好得多。最好使名称尽可能显式。@metatoaster,是的,我在这篇文章中这样做是为了让它更清楚。在我的真实代码中,它是
res\u list
:)使用
l
作为变量名通常也被认为是不好的做法,因为它很容易与
I
1
(我在这里违反了这一点),但比重写内置类型要好得多。最好使名称尽可能显式。@metatoaster,是的,我在这篇文章中这样做是为了弄清楚。在我的真实代码中,它是
res\u list
:)