出野です。 > a = [1, 2, 3, 4, 5, 6, 7] > a.each {|n| a.delete(n)} eachでまわしつつも、同時に配列aの中身を 変更させているからでしょう。 つまり、 1. 最初に 'n' に *0* 番目の '1' が入る。 2. この '1' を配列a より削除。 3. この操作により配列a は [2,3,4,5,6,7] となる。 4. このため次に 'n' に入るのは、'2' ではなく *1* 番目の '3' ということになり・・・ 5. 以後繰り返し。