问题标签 [set-comprehension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
62 浏览

python - Python 中的集合推导和正在创建的集合中的成员资格测试

这实际上是关于集合推导的语义的问题,但我首先需要解释一下上下文。我正在尝试创建一组新的元组,其中 touple 中的配对值是唯一的,无论配对中值的顺序如何。简化我的实际程序,我所拥有的是{(1, 2), (2, 1), (3, 4)}我想得到的东西{(1, 2), (3, 4)}

我试着做这样的事情:

但是,newSetis{(1, 2), (2, 1), (3, 4)}暗示我的条件表达式有问题。我对理解的理解表明,上面是这样的语法糖:

这种传统的循环结构有效(newSetis {(1, 2), (3, 4)})。是否有一些关于理解的东西导致条件在newSet有任何成员之前被评估?我对 Python 还很陌生,所以我想知道我是否遗漏了一些微妙的东西。

谢谢!

0 投票
2 回答
687 浏览

python - 2.6的python集合理解

我正在尝试对 2.6 设置理解,并遇到以下两种方式。我认为第一种方法会比第二种方法快,timeit否则建议。为什么第二种方法更快,即使第二种方法有一个额外的列表实例化,然后是一个集合实例化?

方法一:

方法二:

哪里pwnodes = [('e1', dict(pm=1, wired=1)), ('e2', dict(pm=1, wired=1))]

0 投票
2 回答
85 浏览

python - 需要帮助理解 for 循环的行为

我正在学习 Python 2.7 中的集合教程,并且我遇到了使用for我不理解的循环的行为,我试图找出导致输出差异的原因可能是什么。

练习的目的是从包含使用 for 循环的冻结集的城市对组成的键的字典中生成一个集合,城市。

数据来自以下字典:

还有一个测试列表将创建预期的集合作为检查:

当代码以以下形式编写时,循环会产生预期的结果。

输出:

但是,如果我尝试作为一种理解,使用以下任何一种,我会得到不同的结果。

或者

两者的输出:

我无法弄清楚为什么第一个示例中的 for 循环会按预期解包对,以便它生成一个包含每个城市的一个实例的集合,同时尝试编写循环作为理解拉出frozenset([city1, city2])对并将它们放置在集合中.

我不明白为什么pair会在第一个实例中给出城市字符串,但在第二个实例中传递 freezeset。

有人可以解释不同的行为吗?

注意:正如Holtdonkopotamus所解释的,为什么这种行为不同的问题是,在对变量进行单个赋值之前,使用理解完全评估了整个字典cities,从而创建了一组冻结集,其中标准for循环解包一次一对一对并分别评估每个单独的一对cities,每次循环将它们分配给一个,for并允许联合函数评估传递给它的对的每个实例。

他们进一步解释说,使用*-operator在理解中解包字典以产生所需的行为。

0 投票
1 回答
77 浏览

python - 仅将列表/集合理解用作“for”循环?

我正在 Python 中创建一组 NUM_RECORDS 元组。这是我的代码。

另一种方法是像这样对问题进行编码。

我对这两个代码片段进行了计时,它们对于 20000 条记录的速度大致相同。在风格上,我更喜欢代码的第一个版本。

代码的第一个版本是集合理解的正确用法吗?还是我应该始终坚持第二种方法?

编辑:按照建议改进格式。我大多只是从 IDE 复制和粘贴。对不起,伙计们。

0 投票
2 回答
7417 浏览

python - 集合理解在 Python 中给出“不可散列的类型”(列表集)

我有以下元组列表:

我想将每个元组的所有第二个元素收集到一个集合中:

但它会引发以下错误:

当我打印出迭代中的各个元素时,它表明集合理解的结果不包含预期的标量,而是列表:

为什么会这样?为什么这首先将元素放入列表中,然后将列表放入集合中而没有任何提示?我该如何纠正我的解决方案?

0 投票
1 回答
122 浏览

python - Python 2.7 的哪个微版本引入了集合理解?

它适用于我的解释器(2.7.12)。

http://sopython.com/wiki/In_which_Python_version_was_feature_X_introduced%3F我知道,它是在 2.7 中引入的。

不幸的是,在线文档仅适用于 2.7.13,因此我无法检查在哪个微版本中引入了该功能。

0 投票
0 回答
28 浏览

python - 难以理解集合推导

我不太明白为什么他们的 {} 开头是 C。这只是综合集的语法吗?

x= {c for c in "I've got much nothing"} print(sorted(x))

这将打印: [' ', "'", I, 'e', 'f', 'g', 'h', 'i', 'l', 'n', 'o', 'p', ' t,' 'v', 'y'] 有人可以解释为什么我在 for 循环之前需要 ac 吗?

0 投票
1 回答
125 浏览

python - 集合理解和不同的可比关系

我设置了在某些方面具有可比性的对象,我想从集合中删除对象。我考虑了这个问题如何变化,对于元素之间的不同可比关系。我对搜索空间的开发、内存的使用以及问题的扩展方式很感兴趣。

  • 第一种情况:在最简单的情况下,关系是双向的,因此我们可以删除这两个元素,只要我们可以确保通过删除元素不会删除其他“伙伴”。
  • 第二种情况:可比关系不是双向的。仅删除有问题的元素,而不是与之可比较的元素。一个简化的场景是由整数组成的集合,可比较的操作将是“无休可分”

我可以执行以下操作,而不是删除元素:

当然,作为一名初级 Python 程序员,我的第一个问题是:

  • 对此适当的集合理解是什么?
  • 另外:我不能在不复制的情况下在迭代期间修改 Python 集的大小,对吗?
  • 现在对于那里的算法人员:如果一个元素可以比较的元素数量之间的关系增加,这个问题将如何变化。如果可比关系表示偏序,它会如何变化?
0 投票
1 回答
41 浏览

python-3.x - 请列举 Python 3 中的各种推导式

到目前为止,我已经了解了

  • 列表
  • 字典
  • 发电机

理解。还有其他可以“理解”的迭代吗?我最感兴趣的是 Python 3。

0 投票
1 回答
43 浏览

performance - 慢成对比较

我有一个代码可以打开两个文件,将它们的内容保存到集合(set1 和 set2),并将这些集合之间的成对比较结果保存到输出文件中。这两个文件都非常大(每个文件超过 100K 行),并且这段代码需要很长时间才能输出(超过 10 小时)。

有没有办法优化它的性能?