在 PyCharm 中,当我写:
return set([(sy + ady, sx + adx)])
它说 “函数调用可以用 set literal 替换” 所以它替换为:
return {(sy + ady, sx + adx)}
这是为什么? Python 中的 A set()
与字典 {}
吗?
如果它想优化这个,为什么这个更有效?
原文由 Olivier Pons 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 PyCharm 中,当我写:
return set([(sy + ady, sx + adx)])
它说 “函数调用可以用 set literal 替换” 所以它替换为:
return {(sy + ady, sx + adx)}
这是为什么? Python 中的 A set()
与字典 {}
吗?
如果它想优化这个,为什么这个更有效?
原文由 Olivier Pons 发布,翻译遵循 CC BY-SA 4.0 许可协议
它是 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
dict
语法不同。它由键值对组成。例如:
my_obj = {1:None, 2:None}
原文由 DhruvPathak 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答861 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
Python 集和字典都可以使用大括号构造:
my_dict = {'a': 1, 'b': 2}
my_set = {1, 2, 3}
口译员(和人类读者)可以根据内容区分它们。但是,无法区分空集和空字典,因此在这种情况下,您需要使用
set()
来消除空集的歧义。一个非常简单的测试表明文字构造更快(python3.5):
这个问题 涵盖了文字构造相对于内置函数的一些性能问题,尽管是针对列表和字典。总结似乎是字面结构需要解释器的工作较少。