有条件地加入列表
Conditional joining in a list
我有一个 Python 列表:
data = ['Cost', '$', 4244, '$', 4090, '$', 3967]
我想要做的是将 $
与前面的元素合并并获得一个新列表:
data = ['Cost', '44', '90', '67']
实现此目标的最佳方法是什么?
您可以使用 iterators:
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', '44', '90', '67']
我有一个 Python 列表:
data = ['Cost', '$', 4244, '$', 4090, '$', 3967]
我想要做的是将 $
与前面的元素合并并获得一个新列表:
data = ['Cost', '44', '90', '67']
实现此目标的最佳方法是什么?
您可以使用 iterators:
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', '44', '90', '67']