On 2006-11-25 18:47:26 -0500, Brad Tilley <rtilley / vt.edu> said: > In Python, I can do this to arrays: > > added = [x for x in new_data if x not in old_data] > removed = [x for x in old_data if x not in new_data] > same = [x for x in new_data if x in old_data] > > I believe this is known as list comprehension in Python. How is this done in > Ruby? > > Thanks, > Brad I found this while web searching for the same thing recently; I can't recall where I found it. It's a cute little hack. class Array def comprehend return self unless block_given? result = [] self.each { |i| result.push yield(i) } result.compact end end Then: added = new_data.comprehend { |x| x if not old_data.include? x } removed = old_data.comprehend { |x| x if not new_data.include? x } same = new_data.comprehend { |x| x if old_data.include? x } Best, James