python - 如何根据另一个字符串列表随机替换列表中的字符串
问题描述
我有以下问题,我有一个字符串列表,我想根据另一个列表随机替换某些单词。
我的原始列表如下所示:
original_list = [['Bananas' 'are' 'boring' 'and' 'too' 'sweet'],
['Why','can', 'we','get','apples','but','no','blueberries'],
['this','is','not','good','for','eat','some','grapes'],
['have','you','ever','tried','to','buy','all','the','different','apples']]
这是我想随机替换的单词列表original_list
:
orginal_words = ['Bananas','apples','grape']
这是我想随机选择的单词列表original_words
:
replacement_words = ['popcorn','juice','chocolate','chips','cake','sweets']
我想出了一种方法来为单个单词执行此操作,但我不确定如何根据列表使其更有效:
from random import shuffle
shuffle(replacement_words)
for el in replacement_words:
for test_str in original_list:
test_str = test_str.replace('Bananas', el)
print("String after random replacement : " + str(test_str))
解决方案
您可以按索引随机选择replacement_words
列表,使用:
ind = random.randint(0, len(replacement_words))
此外,它不保证元素的唯一性。您可以提前生成列表并制作:
for new_word, old_word in zip(original_list, replacement_words_indices):
# Do replacement here
该算法将是线性的,而不是二次的。
推荐阅读
- java - 如何replyChannel为false或null?
- c# - ASP.NET Core ToHtmlString
- python - OverFlowError:数学范围错误 javaScript 到 python
- python - Python 在 Windows 上发送 SIGINT 信号子进程
- xcode - Xcode 快速帮助未显示
- laravel - IE11 无法访问此页面,但该页面有效且可访问
- spring - 使用 Spring Data Projection 进行过滤
- r - 网格在控制台中运行时找到字体,但在渲染 Rmd 时没有
- jolt - 坚持简单的颠簸转换
- ajax - .click 功能问我两次确认