Skip to main content
 首页 » 编程设计

python之如何在单个操作中展平具有已知分隔符的列表列表

2025年05月04日21yxwkf

假设我有一个包含已知分隔符 ; 的列表。如果该列表包含由该分隔符分隔的字符串,我将如何展平该列表?例如:

>>> [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']