Zab*_*bba 18 ruby set-difference
演示(我期待结果[3]):
[1,2] - [1,2,3] => [] # Hmm
[1,2,3] - [1,2] => [3] # I see
a = [1,2].to_set => #<Set: {1, 2}>
b = [1,2,3].to_set => #<Set: {1, 2, 3}>
a - b => #<Set: {}> WTF!
Run Code Online (Sandbox Code Playgroud)
和:
[1,2,9] - [1,2,3] => [9] # Hmm. Would like [[9],[3]]
Run Code Online (Sandbox Code Playgroud)
无论输入顺序如何,如何执行真正的设定差异?
PS.另外,我需要为两个2000元素数组执行此操作.通常,数组#1的元素数量少于数组#2,但这不能保证.
Jon*_*ier 56
的-操作者施加到两个阵列a和b给出了相对补的b在a(项进行a而不是在b).
您正在寻找的是两组的对称差异(两者之间的相对互补的并集).这样就可以了:
a = [1, 2, 9]
b = [1, 2, 3]
a - b | b - a # => [3, 9]
Run Code Online (Sandbox Code Playgroud)
c = Set[1, 2, 9]
d = Set[1, 2, 3]
c ^ d # => #<Set: {3, 9}>
Run Code Online (Sandbox Code Playgroud)
为了获得额外的乐趣,您还可以在两个集合的并集中找到交集的相对补集:
( a | b ) - ( a & b ) # => #<Set: {3, 9}>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8674 次 |
| 最近记录: |