我想从两个列表中返回不在另一个列表中的值:
bar = [ 1,2,3,4,5 ]
foo = [ 1,2,3,6 ]
returnNotMatches( a,b )
将返回
[[ 4,5 ],[ 6 ]]
答案 0 :(得分:15)
只需使用列表理解:
data[2016][2]
答案 1 :(得分:3)
这应该
***node is not discoverable and some tNode riak@1**.**.**.**1 should be reachable.
Hints:
The Erlang node may have a different cookie from the one specified.
The Erlang node may have been registered addressing the host in a different way than specified.***
如果你不在乎结果应该是一个列表,你可以跳过最后一次投射。
答案 2 :(得分:3)
最简单,最快的方法之一是:
new_list = set(list1).difference(list2)
至于比赛是:
new_list = set(list1).difference(list2)
答案 3 :(得分:1)
我可能会依赖stdlib ......
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
import difflib
def returnNotMatches(a, b):
blocks = difflib.SequenceMatcher(a=a, b=b).get_matching_blocks()
differences = []
for b1, b2 in pairwise(blocks):
d1 = a[b1.a + b1.size: b2.a]
d2 = b[b1.b + b1.size: b2.b]
differences.append((d1, d2))
return differences
print returnNotMatches([ 1,2,3,4,5 ], [ 1,2,3,6 ])
打印:[([4, 5], [6])]
这将序列作为流进行比较,并找出流中的差异。它需要考虑顺序,等等。如果订单和重复项不重要,那么sets
是目前为止的方法(只要元素可以进行哈希处理)。
答案 4 :(得分:0)
您可以使用列表理解和压缩
''.join([i[0] for i in zip(a, a.lower()) if i[0] == i[1]])