【发布时间】:2015-08-17 19:45:34
【问题描述】:
通过反复试验我发现
my_list = range(10)
my_list[:None] == my_list[:]
我将它用于 django 查询集,因此我可以定义大小或全部获取:
some_queryset[:length if length else None]
# @IanAuld
some_queryset[:length or None]
# @Bakuriu
# length works for all numbers and None if you want all elements
# does not work with False of any other False values
some_queryset[:length]
- 在切片时使用
None是一种好习惯吗? - 这种方法在任何情况下都会出现问题吗?
【问题讨论】:
-
如果
length = 0(要求一个长度为0的查询集),你会得到一个相当意想不到的结果。 -
顺便说一句,即使
my_list[None:None] == my_list[:]是True! -
@IanAuld 是的,我知道 ;-) 但我认为说空列表没有用例是省事。
-
请使用
length而不是lenght。 -
@yamm 只要您确定
0永远不会成为length的可接受值,那么它应该可以正常工作。虽然可以缩短为lst[:length or None]
标签: python list slice nonetype