标签: set

Python set([])如何检查两个对象是否相等?对象需要定义哪些方法来自定义它?

我需要在Python中创建一个'容器'对象或类,它保存我也定义的其他对象的记录.该容器的一个要求是,如果认为两个对象相同,则移除一个(任一个).我的第一个想法是使用a set([])作为包含对象,来完成这个要求.

但是,该集不会删除两个相同对象实例中的一个.我必须定义什么来创建一个?

这是Python代码.

class Item(object):
  def __init__(self, foo, bar):
    self.foo = foo
    self.bar = bar
  def __repr__(self):
    return "Item(%s, %s)" % (self.foo, self.bar)
  def __eq__(self, other):
    if isinstance(other, Item):
      return ((self.foo == other.foo) and (self.bar == other.bar))
    else:
      return False
  def __ne__(self, other):
    return (not self.__eq__(other))
Run Code Online (Sandbox Code Playgroud)

翻译员

>>> set([Item(1,2), Item(1,2)])
set([Item(1, 2), Item(1, 2)])
Run Code Online (Sandbox Code Playgroud)

很明显__eq__(),被调用的x == y不是集合调用的方法.什么叫?我还必须定义什么其他方法?

注意:Items必须保持可变,并且可以更改,因此我无法提供__hash__()方法.如果这是唯一的方法,那么我将重写使用不可变的Items.

python methods comparison set

74
推荐指数
2
解决办法
4万
查看次数

H.264流的序列/图像参数集的可能位置

我正在研究H.264解码器,我想知道在哪里可以找到SPS和PPS.我的参考文献告诉我那些是在H.264-Stream中编码的NAL单元,但是当我查看一个带有IsoViewer的示例-MP4-File时,它说SPS和PPS在avcC Box中.

这究竟是如何工作的?它如何查找.mkv文件或其他H.264容器?

提前致谢!

parameters mp4 set h.264 mkv

74
推荐指数
1
解决办法
5万
查看次数

Python:看看一个集合是否完全包含另一个集合?

有没有快速的方法来检查一个集合是否完全包含另一个集合?

就像是:

>>>[1, 2, 3].containsAll([2, 1])
True

>>>[1, 2, 3].containsAll([3, 5, 9])
False
Run Code Online (Sandbox Code Playgroud)

python set

71
推荐指数
5
解决办法
4万
查看次数

HashSet和Set之间有什么区别?

看到代码片段就像

Set<Record> instances = new HashSet<Record>();
Run Code Online (Sandbox Code Playgroud)

我想知道Hashset是否是一种特殊的集合.他们之间有什么区别?

java interface set

69
推荐指数
6
解决办法
7万
查看次数

Python:如何将集合中的条目连接成一个字符串?

基本上,我试图将一组中的条目连接在一起以输出一个字符串.我试图使用类似于列表的连接函数的语法.这是我的尝试:

list = ["gathi-109","itcg-0932","mx1-35316"]
set_1 = set(list)
set_2 = set(["mx1-35316"])
set_3 = set_1 - set_2
print set_3.join(", ")
Run Code Online (Sandbox Code Playgroud)

但是我收到此错误: AttributeError: 'set' object has no attribute 'join'

集合的等效调用是什么?

python list set python-2.7

69
推荐指数
4
解决办法
10万
查看次数

从java中的arraylist中获取唯一值

我有ArrayList一些记录和一个列包含气体名称为CO2 CH4 SO2等.现在我想要检索不同的气体名称(唯一),只是没有重复ArrayList.怎么做到呢?

java list set

69
推荐指数
6
解决办法
19万
查看次数

Python集合理解

所以我在家庭作业中遇到了这两个问题而且我被困在第二个问题上.

  1. 使用Python集合理解(Python相当于Set Builder表示法)生成一组小于100的所有素数.回想一个素数是一个大于1的整数,不能被除整数以外的任何整数整除.本身和1.将您的素数集存储在变量中(您将需要它用于其他部分).输出您的素数组(例如,使用打印功能).

  2. 使用Python集合理解来生成一组有序对(长度为2的元组),它由所有由小于100的素数组成的素数对组成.素数对是一对连续的奇数,它们都是素数.将您的Prime Pairs集存储在变量中.你的1号组将非常有帮助.输出您的Prime对的集合.

对于第一个,这完美地工作:

r= {x for x in range(2, 101) 
if not any(x % y == 0 for y in range(2, x))} 
Run Code Online (Sandbox Code Playgroud)

但是,我对第二个问题很难过.我想我可能不得不采取一些东西的笛卡尔积,但我只是不确定.

这让我有点接近,但我只想要连续对.

cart = { (x, y) for x in r for y in r
     if x < y }
Run Code Online (Sandbox Code Playgroud)

python set set-comprehension

69
推荐指数
3
解决办法
9万
查看次数

C++ std :: set update很乏味:我无法更改元素

我发现更新操作std::set很繁琐,因为cppreference上没有这样的API .所以我现在做的是这样的:

//find element in set by iterator
Element copy = *iterator;
... // update member value on copy, varies
Set.erase(iterator);
Set.insert(copy);
Run Code Online (Sandbox Code Playgroud)

基本上迭代器返回的Set是a const_iterator,你不能直接改变它的值.

有一个更好的方法吗?或者也许我应该std::set通过创建我自己的(我不知道它是如何工作的...)来覆盖.

c++ stl set

66
推荐指数
5
解决办法
2万
查看次数

在python中的set操作中添加vs更新

如果我只想在集合中添加单个值,那么在python中添加和更新操作之间有什么区别.

a = set()
a.update([1]) #works
a.add(1) #works
a.update([1,2])#works
a.add([1,2])#fails 
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样.

python set

66
推荐指数
4
解决办法
6万
查看次数

Javascript设置与阵列性能

这可能是因为集合对Javascript来说相对较新,但是我无法在StackO或其他任何地方找到一篇文章来讨论Javascript中两者之间的性能差异.那么,两者之间在性能方面有什么不同?具体来说,当涉及删除,添加和迭代时.

javascript arrays iteration performance set

66
推荐指数
6
解决办法
3万
查看次数