把列表和字符串列成一个平面列表

2024-05-23 14:43:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下包含列表和字符串的lista

['IBERDROLA', 'ACCOR\xa0SA', ['ADMIRAL'], ['ADECCO', 'IAG']]

我想用这个输出使它成为flat_list

['IBERDROLA', 'ACCOR\xa0SA', 'ADMIRAL', 'ADECCO', 'IAG']

可能我没有使用正确的关键字来找到想要的答案,买我只找到 Making a flat list out of list of lists in Python (没有str类似的地雷)转换成flat_list,输出如下:

flat_list = [item for sublist in lista for item in sublist] 

['I', 'B', 'E', 'R', 'D', 'R', 'O', 'L', 'A', 'A', 'C', 'C', 'O', 'R', '\xa0', 'S', 'A', 'ADMIRAL', 'ADECCO', 'IAG']

Tags: ofin列表foritemlistflatlista
3条回答

可以使用isinstance()函数检查列表项的类型:

lista = ['IBERDROLA', 'ACCOR\xa0SA', ['ADMIRAL'], ['ADECCO', 'IAG']]
flat_list = []

for item in lista:
    if isinstance(item, list):
        flat_list.extend(item)
    else:
        flat_list.append(item)
   lst = ['IBERDROLA', 'ACCOR\xa0SA', ['ADMIRAL'], ['ADECCO', 'IAG']]
   new_lst = reduce(lambda x,y:x+y,[val if isinstance(val,list) else [val] for val in lst])
   print new_lst

   Result : ['IBERDROLA', 'ACCOR\xa0SA', 'ADMIRAL', 'ADECCO', 'IAG']

假设您的列表存储为变量l,您可以使用带有测试isinstance的三元运算符作为条件:

[i for s in l for i in (s if isinstance(s, list) else (s,))]

相关问题 更多 >