假设我有一个包含已知分隔符 ; 的列表。如果该列表包含由该分隔符分隔的字符串,我将如何展平该列表?例如:
>>> [item for item in [1,2,'2;3']]
[1, 2, '2;3']
我可以用第二个 for 循环详细地完成这个:
vals = []
separator = ';'
for _val in [1,2,'2;3']:
_val = str(_val)
if separator not in _val:
vals.append(_val)
else:
vals.extend(_val.split(separator))
有没有办法在单个操作中完成此操作,例如使用列表理解或 chain ?
请您参考如下方法:
由于您希望最终值都是字符串,因此可以在转换为字符串后对所有字符串调用 split 并使用itertools.chain.from_iterable:
import itertools
c = itertools.chain.from_iterable(str(item).split(";") for item in [1,2,'2;3'])
print(list(c))
结果:
['1', '2', '2', '3']
