我有以下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']
答案 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']