python - 从现有列表创建重复元素列表
问题描述
我正在上课学习摩尔斯电码。在课程开始时,我们会得到一个 .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 文档,并且正在努力寻找解决方案。
谢谢你的帮助!
斯科特
解决方案
假设您有l = ['cat', 'dog']
并且您希望每个元素重复 3 次,您可以使用itertools
库来执行以下操作
import itertools
l = ['cat', 'dog']
duplicate = list(itertools.chain.from_iterable(itertools.repeat(x, 3) for x in l))
这样你就可以保持元素的顺序
推荐阅读
- spring - Spring Boot 约定可以改变吗?
- c# - 在 Blazor Webassembly 中显示文本
- sql - 如何从 SQL 列中的逗号分隔字符串中搜索逗号分隔字符串?
- swift - 如何为照片库制作 UIImagePickerController 和我的问题
- javascript - 计算 SVG 元素(包括文本)之间的距离
- docker - Nginx 容器作为另一个 docker 容器 localhost - 502 BAD gateway 的代理
- javascript - 动态添加选项到多选的问题
- python - Tox 多个 install_command
- frama-c - frama-c / ACSL / WP : 集合的基数
- php - 我需要帮助提交表格