以下代码之间的区别是什么:
foo = list()
Run Code Online (Sandbox Code Playgroud)
和
foo = []
Run Code Online (Sandbox Code Playgroud)
Python表明有一种做事方式,但有时似乎不止一种.
Doo*_*nob 24
一个是函数调用,一个是文字:
>>> import dis
>>> def f1(): return list()
...
>>> def f2(): return []
...
>>> dis.dis(f1)
1 0 LOAD_GLOBAL 0 (list)
3 CALL_FUNCTION 0
6 RETURN_VALUE
>>> dis.dis(f2)
1 0 BUILD_LIST 0
3 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
使用第二种形式.它更像Pythonic,它可能更快(因为它不涉及加载和调用单独的函数).
orl*_*rlp 13
list是一个可在运行时覆盖的全局名称.list()叫这个名字.
[] 始终是列表文字.
And*_*Sun 13
为了完成,需要注意的另一件事是list((a,b,c))返回[a,b,c],而[(a,b,c)]不会解压缩元组.当您想要将元组转换为列表时,这非常有用.反过来也有效,tuple([a,b,c])返回(a,b,c).
编辑:正如orlp提到的,这适用于任何可迭代的,而不仅仅是元组.
| 归档时间: |
|
| 查看次数: |
4594 次 |
| 最近记录: |