Вставлять символы в строковый массив случайным образом минимальное количество раз - PullRequest
0 голосов
/ 25 мая 2020

Учитывая массив строк, я хотел бы вставить символы случайным образом по крайней мере определенное количество раз за один прогон по массиву

# Very large array of strings in reality
text = ['some', 'list', 'of', 'strings', 'really', 'long', 'one', 'at', 'that']
characters = ['♥', '♫']
# Guaranteed 2 times for example:
result = ['some', '♫', 'list', 'of', '♥', 'strings', 'really', '♥', 'long', 'one', 'at', '♫', 'that']

Ответы [ 3 ]

1 голос
/ 25 мая 2020
from random import randrange

text = ['some', 'list', 'of', 'strings', 'really', 'long', 'one', 'at', 'that']
characters = ['♥', '♫']
no_of_reps = 2

def insert_to_random_index(array, characters, no_of_reps):
    for i in range(no_of_reps):
        for character in characters:        
            random_index = randrange(len(array))
            array = array[:random_index] +[character] + array[random_index:]
    return array

new_text = insert_to_random_index(text, characters, no_of_reps)
print(new_text)
0 голосов
/ 25 мая 2020

Просто проверьте это, и если у вас возникнут сомнения, не стесняйтесь спрашивать:

  import random

lst = ['!','-','=','~','|']
string = 'Hello world. Hello world.'


print ''.join('%s%s' % (x, random.choice(lst) if random.random() > 0.5 else '') for x in string)
0 голосов
/ 25 мая 2020
import random

text = ['some', 'list', 'of', 'strings', 'really', 'long', 'one', 'at', 'that']
characters = ['♥', '♫']

print(text)
for i in range(0, random.randint(2, 10)):
    idx = random.randint(0, len(text))
    text = text[:idx] + [random.choice(characters)] + text[idx:]

print(text)

Тестовый вывод:

['some', 'list', 'of', 'strings', 'really', 'long', 'one', 'at', 'that']
['some', 'list', 'of', 'strings', '♫', 'really', 'long', 'one', '♫', 'at', 'that', '♫']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...