在PyCharm中,当我写道:
return set([(sy + ady, sx + adx)])
Run Code Online (Sandbox Code Playgroud)
它说"函数调用可以用set literal替换",所以它替换为:
return {(sy + ady, sx + adx)}
Run Code Online (Sandbox Code Playgroud)
这是为什么?set()Python中的A 与字典不一样{}?
如果它想要优化它,为什么这更有效?
sna*_*erb 81
Python集和字典都可以使用花括号构建:
my_dict = {'a': 1, 'b': 2}
my_set = {1, 2, 3}
口译员(和人类读者)可以根据其内容区分它们.但是,无法区分空集和空字典,因此需要使用set()空集来消除歧义.
一个非常简单的测试表明文字结构更快(python3.5):
>>> timeit.timeit('a = set([1, 2, 3])')
0.5449375328607857
>>> timeit.timeit('a = {1, 2, 3}')
0.20525191631168127
Run Code Online (Sandbox Code Playgroud)
这个问题涵盖了内置函数的字面构造性能的一些问题,尽管是列表和字母.摘要似乎是文字结构需要较少的翻译工作.
它是一种替代语法 set()
>>> a = {1, 2}
>>> b = set()
>>> b.add(1)
>>> b.add(2)
>>> b
set([1, 2])
>>> a
set([1, 2])
>>> a == b
True
>>> type(a) == type(b)
True
Run Code Online (Sandbox Code Playgroud)
dict语法不同.它由键值对组成.例如:
my_obj = {1:None, 2:None}
Run Code Online (Sandbox Code Playgroud)
另一个例子如何set和{}不可互换(正如 jonrsharpe 提到的):
In: f = 'FH'
In: set(f)
Out: {'F', 'H'}
In: {f}
Out: {'FH'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19362 次 |
| 最近记录: |