我在Python中有两个列表,如下所示:
temp1 = ['One', 'Two', 'Three', 'Four']
temp2 = ['One', 'Two']
Run Code Online (Sandbox Code Playgroud)
我需要创建第三个列表,其中包含第一个列表中不存在于第二个列表中的项目.从我必须得到的例子:
temp3 = ['Three', 'Four']
Run Code Online (Sandbox Code Playgroud)
有没有循环和检查的快速方法?
我想将数组转换为Java中的Set.有一些明显的方法可以做到这一点(即使用循环),但我想要一些更整洁的东西,如:
java.util.Arrays.asList(Object[] a);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我使用此代码将a转换Set为List:
Map<String, List> mainMap = new HashMap<String, List>();
for(int i=0; i<something.size(); i++){
Set set = getSet(...); //returns different result each time
List listOfNames = new ArrayList(set);
mainMap.put(differentKeyName,listOfNames);
}
Run Code Online (Sandbox Code Playgroud)
我想避免在循环的每次迭代中创建一个新列表.那可能吗?
有谁知道Set在C#中是否有与Java 集合相当的好处?我知道你可以使用a Dictionary或者HashTable通过填充而忽略值来模仿一个集合,但这不是一个非常优雅的方式.
[] =空 list
() =空 tuple
{} =空 dict
空的是否有类似的符号set?或者我必须写set()?
假设如下:
>>> s = set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
如何获得的值(任意值)出来s而不做s.pop()?我想把这个项留在集合中,直到我确定我可以删除它 - 我只能在异步调用另一个主机后才能确定.
又快又脏:
>>> elem = s.pop()
>>> s.add(elem)
Run Code Online (Sandbox Code Playgroud)
但是你知道更好的方法吗?理想情况下在恒定的时间.
我有这样的一套:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Run Code Online (Sandbox Code Playgroud)
如何[0,1,2,3,4,5,6,7,8,9,10]在此集合中添加值?
为什么不Set提供一个操作来获得一个等于另一个元素的元素?
Set<Foo> set = ...;
...
Foo foo = new Foo(1, 2, 3);
Foo bar = set.get(foo); // get the Foo element from the Set that equals foo
Run Code Online (Sandbox Code Playgroud)
我可以问一下是否Set包含一个等于的元素bar,为什么我不能得到那个元素?:(
为了澄清,该equals方法被覆盖,但它只检查其中一个字段,而不是所有字段.因此,两个Foo被认为相等的对象实际上可以具有不同的值,这就是我不能使用的原因foo.