使用减号返回整个列表的语法是什么?
当使用减号符号时,如何返回整个列表的语法?
问题的原因:
- 之前没有考虑到创建一个新的浅列表,而是默认创建一个新的列表。
解决方法:
- 可以使用默认值None
来实现,x[:-d or None]
。
其他讨论和发现:
- 实际上,并不会创建一个新的列表,所以这是一个好的解决方法,x[:-d or None] is x
的结果为True
。
- 对于字符串,有一个特殊的情况,不会创建新的字符串,而是重用原来字符串的内存位置。
- 在性能比较中发现,x[:-d] if d else x
相对于x[:-d or None]
要快大约2.7倍。
- 这可能是因为第一个方法只需要加载d
,检查其真值,并加载x
,而第二个方法有额外的步骤。
- 在源代码中搜索unicode_result_unchanged
可以找到有关此问题的更多信息。
- 在源代码中有一个特殊情况的检查,如果是完整切片,就会返回Unicode字符串。
当使用减号符号时,可以使用x[:-d or None]
来返回整个列表,而不会创建新的列表。这是一种简洁而高效的方法。