首页 > 解决方案 > 从现有列表创建重复元素列表

问题描述

我正在上课学习摩尔斯电码。在课程开始时,我们会得到一个 .txt 格式的单词列表。我将此列表转换为摩尔斯电码 .mp3 文件。(LCWO.net)每个单词播放一次,但是,最好播放多次,这样我就可以学习模式。

我的目标是获取原始文本文件并根据用户输入多次复制每个单词。我一直在手动输入这个,但我认为计算机可以更容易地完成它。所以,我选择了 Python 来尝试创建程序。到目前为止,我已经弄清楚如何打开 .txt 文件,创建一个列表,去掉每个单词后的换行符,然后将列表打印到屏幕上。

如何循环遍历此列表并根据用户输入创建每个单词的副本?例如,用户将为每个单词的 3 个副本输入“3”。为了说明,如果单词列表是['cat', 'dog', 'chicken'],我如何创建一个列表:['cat', 'cat', 'cat', 'dog', 'dog', 'dog', 'chicken','chicken', 'chicken'],然后将此列表写入文本文件,以便每个单词都在一行上?

文件名是'words.txt'

cat cat cat
dog dog dog
chicken chicken chicken

我想我可以弄清楚如何获取用户输入并将其分配给一个变量,然后将此变量用作生成新列表的循环的一部分。我还想我可以弄清楚如何将新列表写入文件。我需要帮助的部分是弄清楚如何根据用户的输入(单词的迭代次数)创建列表。

我意识到我要求您完成这项工作,但我已经阅读了 Python 文档,并且正在努力寻找解决方案。

谢谢你的帮助!

斯科特

标签: pythonlisttext-files

解决方案


假设您有l = ['cat', 'dog']并且您希望每个元素重复 3 次,您可以使用itertools库来执行以下操作

import itertools

l = ['cat', 'dog']
duplicate = list(itertools.chain.from_iterable(itertools.repeat(x, 3) for x in l))

这样你就可以保持元素的顺序


推荐阅读