当前位置: 首页 > 知识库问答 >
问题:

为什么有时可以用{}替换set()?

张积厚
2023-03-14

在PyCharm中,当我写道:

return set([(sy + ady, sx + adx)])

它说“Function call can be replacement with set literal”,所以它将它替换为:

return {(sy + ady, sx + adx)}

这是为什么?Python中的set()与字典{}不同?

如果它想优化这个,为什么这个更有效?

共有1个答案

颜宸
2023-03-14

Python集和字典都可以使用花括号构造:

my_dict={'a':1,'b':2}

my_set={1,2,3}

>>> timeit.timeit('a = set([1, 2, 3])')
0.5449375328607857
>>> timeit.timeit('a = {1, 2, 3}')
0.20525191631168127

这个问题涵盖了文字构造在内置函数上的一些性能问题,尽管对于列表和dict来说是如此。总结起来似乎是字面构造需要解释器更少的工作。

 类似资料:
  • 有人能解释一下为什么在我的例子中,用组件替换RestController注释没有任何明显的效果吗?我的控制器: 这以同样的方式工作:

  • 问题内容: 我正在寻找一种替换Swift中字符的方法。 示例:“这是我的字符串” 我想用“ +”替换“”以获取“ This + is + my + string”。 我该如何实现? 问题答案: 此答案已 针对Swift 4和5 进行了 更新 。如果您仍在使用Swift 1、2或3,请参阅修订历史记录。 您有两种选择。您可以按照@jaumard的建议进行操作并使用 而且,正如下面@cprcrack所

  • 本文向大家介绍可替换元素和不可替换元素有什么不同的特点?相关面试题,主要包含被问及可替换元素和不可替换元素有什么不同的特点?时的应答技巧和注意事项,需要的朋友参考一下 可替换元素的内容由元素的某些属性的值决定 不可替换元素的内容由子节点的内容决定

  • 我正在寻找一种方法来替换快速中的字符。 我想用“+”替换“”,以得到“this+is+my+字符串”。 我怎样才能做到这一点?

  • 问题内容: 我不应该能够调用实例化对象的私有方法。我想知道为什么下面的代码有效。 我知道可以从类中访问私有方法。但是,如果类中的方法实例化了同一类的对象,则作用域规则是否不适用于该实例化的对象? 如本例所示,像main这样的静态方法可以访问类的非静态成员吗​​? 问题答案: 您的方法是的方法,因此可以调用的私有方法。 只是因为它是一个方法并不妨碍它表现得像为目的的方法,等等。 只是阻止的方法 等

  • 问题内容: 我有这个 这将在文本框中获取值,如下所示 2019年12月31日 现在我在上面做 结果是 c_1231 / 2019 它错过了我不明白为什么的最后一个’/’。 问题答案: 您需要设置g标志以全局替换: 否则,将仅替换第一次出现的事件。