Случайное чередование 2 Массивы в Python

Предположим, у меня есть два массива:

a = [1, 2, 3, 4]
b = [5, 6, 7, 8, 9]

Я хочу чередовать эти два массива с переменной 'c' (обратите внимание, что 'a' и 'b' не обязательно имеют одинаковую длину), но я не хотите, чтобы они чередовались детерминированным образом. Короче говоря, недостаточно просто заархивировать эти два массива. Я не хочу:

c = [1, 5, 2, 6, 3, 7, 4, 8, 9]

Вместо этого я хочу что-то случайное, например:

c = [5, 6, 1, 7, 2, 3, 8, 4, 9]

Также обратите внимание, что порядок «a» и «b» сохраняется в результирующем массиве «c».

Текущее решение, которое у меня есть, требует цикла for и генерации случайных чисел. Мне это не нравится, и я надеюсь, что кто-то может указать мне лучшее решение.

# resulting array
c = []

# this tells us the ratio of elements to place in c. if there are more elements 
# in 'a' this ratio will be larger and as we iterate over elements, we will place
# more elements from 'a' into 'c'.
ratio = float(len(a)) / float(len(a) + len(b))

while a and b:
    which_list = random.random()
    if which_list < ratio:
        c.append(a.pop(0))
    else:
        c.append(b.pop(0))

# tack on any extra elements to the end
if a:
    c += a
elif b:
    c += b
14
задан salil 17 May 2012 в 23:42
поделиться