アレイのuniq

Pythonの以下の事をRubyでやってみた。

xs = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
sorted(set(xs), key=xs.index)
require 'set'
xs = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
Set.new(xs).sort {|l, r|
  xs.index(l) <=> xs.index(r)
}

Set.new(xs)した時点で何故か元の順番に並んでいたが強制的にソートした。Rubyはきれいだと思うがコードブロックを1行で書くのか3行で書くのか迷う。縦に短くしたいなら長くならない限り1行に収めた方が良いのかも。PythonのPEP 8にあたる文書がRubyにはないのかな?それにしてもコードブロックは便利すぎる。