首页 > 解决方案 > 有条件地加入列表

问题描述

我有一个 Python 列表:

data = ['Cost', '$', 4244, '$', 4090, '$', 3967]

我想要做的是$与前面的元素合并并获得一个新列表:

data = ['Cost', '$4244', '$4090', '$3967']

实现这一目标的最佳方法是什么?

标签: pythonliststring-concatenation

解决方案


您可以使用迭代器

data_iter = iter(data)
[e + str(next(data_iter)) if e == '$' else e for e in data_iter]

这利用了我们可以获得迭代的下一个元素的事实,即使在迭代迭代时也是如此。每次'$'找到一个字符串时,都会拉入下一个元素并将其连接为一个字符串。

演示:

>>> data = ['Cost', '$', 4244, '$', 4090, '$', 3967]
>>> data_iter = iter(data)
>>> [e + str(next(data_iter)) if e == '$' else e for e in data_iter]
['Cost', '$4244', '$4090', '$3967']

推荐阅读