将列表和字符串列表制成平面列表

时间:2018-10-24 13:32:12

标签: python list

我有以下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  (没有像矿井这样的strflat_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']

3 个答案:

答案 0 :(得分:2)

您可以使用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)

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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