Python 在列表中添加某些元素

Python 在列表中添加某些元素,python,list,Python,List,我有一个带字符串的列表,如果它们不是字母,我想添加两个相邻的元素。这是我的清单 n=['u', '<', '=', 'd', 'd', '<', '<', 'f'] n=['u','您可以使用itertools.groupby高效地迭代这些组,然后将结果累积到一个新列表中,加入并追加或扩展组…因此: >>> from itertools import groupby >>> n = ['u', '<', '=', 'd', 'd',

我有一个带字符串的列表,如果它们不是字母,我想添加两个相邻的元素。这是我的清单

n=['u', '<', '=', 'd', 'd', '<', '<', 'f']

n=['u','您可以使用
itertools.groupby
高效地迭代这些组,然后将结果累积到一个新列表中,加入并追加或扩展组…因此:

>>> from itertools import groupby
>>> n = ['u', '<', '=', 'd', 'd', '<', '<', 'f']
>>> new_n = []
>>> for is_letter, group in groupby(n, str.isalpha):
...     if not is_letter:
...         new_n.append(''.join(group))
...     else:
...         new_n.extend(group)
...
>>> new_n
['u', '<=', 'd', 'd', '<<', 'f']

很好的一点是,它在列表中只传递一次(给您线性时间复杂度),并且在分组方面应该像您希望的那样高效,因为
itertools
是用C实现的。

您能发布您尝试过的低效方法吗?我的意思是,我可能会想到1,只需使用ascii码提取字母,分别连接符号,然后将它们全部插入到一个类似3F的列表中或者循环,但我没有尝试过,因为这绝对不是我要走的路。我尝试过使用枚举器循环,但这给了我错误的答案。非常感谢你,我在一百万年内都不会想到这一点。
>>> [(k, list(g)) for k,g in groupby(n, str.isalpha)]
[(True, ['u']), (False, ['<', '=']), (True, ['d', 'd']), (False, ['<', '<']), (True, ['f'])]