Insert element in Python list after every nth element(在每个第 n 个元素之后插入 Python 列表中的元素)
问题描述
假设我有一个这样的 Python 列表:
Say I have a Python list like this:
letters = ['a','b','c','d','e','f','g','h','i','j']
我想在每个第 n 个元素之后插入一个x",比如说该列表中的三个字符.结果应该是:
I want to insert an 'x' after every nth element, let's say three characters in that list. The result should be:
letters = ['a','b','c','x','d','e','f','x','g','h','i','x','j']
我知道我可以通过循环和插入来做到这一点.我真正在寻找的是一种 Python 方式,也许是单线?
I understand that I can do that with looping and inserting. What I'm actually looking for is a Pythonish-way, a one-liner maybe?
推荐答案
我有两个一体机.
给定:
>>> letters = ['a','b','c','d','e','f','g','h','i','j']
使用
enumerate
获取索引,每3rd个字母添加'x'
,eg:mod(n, 3) == 2
,然后拼接成字符串并list()
.
Use
enumerate
to get index, add'x'
every 3rd letter, eg:mod(n, 3) == 2
, then concatenate into string andlist()
it.
>>> list(''.join(l + 'x' * (n % 3 == 2) for n, l in enumerate(letters)))
['a', 'b', 'c', 'x', 'd', 'e', 'f', 'x', 'g', 'h', 'i', 'x', 'j']
但是作为 @sancho.s 指出如果任何元素有多个字母,这将不起作用.
But as @sancho.s points out this doesn't work if any of the elements have more than one letter.
使用嵌套推导来展平列表列表(a),以 3 个为一组进行切片,如果距离末尾小于 3,则添加 'x'
列表.
Use nested comprehensions to flatten a list of lists(a), sliced in groups of 3 with 'x'
added if less than 3 from end of list.
>>> [x for y in (letters[i:i+3] + ['x'] * (i < len(letters) - 2) for
i in xrange(0, len(letters), 3)) for x in y]
['a', 'b', 'c', 'x', 'd', 'e', 'f', 'x', 'g', 'h', 'i', 'x', 'j']
(a) [item for subgroup in groups for item in subgroup]
展平一个锯齿状的列表列表.
(a) [item for subgroup in groups for item in subgroup]
flattens a jagged list of lists.
这篇关于在每个第 n 个元素之后插入 Python 列表中的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在每个第 n 个元素之后插入 Python 列表中的元素
基础教程推荐
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01