Python 如何从列表中分离字符串和元组?

Python 如何从列表中分离字符串和元组?,python,list,Python,List,我有一个元组和字符串值的列表。如下 lst = [ 'ACER', (['1000.0'], None), 'ACER', (['1000.0'], None), 'HP', (['1000.0'], None), 'ACER', (['1001.0'], None), 'ACER', (['1001.0'], None), 'ACER', (['1001.0'], None), 'ACER', (

我有一个元组和字符串值的列表。如下

lst = [
       'ACER', (['1000.0'], None),
       'ACER', (['1000.0'], None),
       'HP', (['1000.0'], None),
       'ACER', (['1001.0'], None),
       'ACER', (['1001.0'], None),
       'ACER', (['1001.0'], None),
       'ACER', (['1001.0'], None),
       'HP', (['1001.0'], None)
      ]
必须将其作为字符串列表和元组列表分开。并删除重复的字符串和元组

我需要的结果如下:

Str_lst = ['ACER', 'HP']
tup_lst = [(['1000.0'], None), (['1001.0'], None)]

注意:我的列表中有80000多个值,所以请给我最好的性能解决方案

简单地检查一下元素是否为元组的实例。如果是tuple,则附加到tupl\u列表

lst = [
       'ACER', (['1000.0'], None),
       'ACER', (['1000.0'], None),
       'HP', (['1000.0'], None),
       'ACER', (['1001.0'], None),
       'ACER', (['1001.0'], None),
       'ACER', (['1001.0'], None),
       'ACER', (['1001.0'], None),
       'HP', (['1001.0'], None)
      ]
tupl_list=[]
normalist=[]
for i in lst:       
    if isinstance(i,tuple):
        tupl_list.append(i)
    else:normalist.append(i)   
你可以试试这个

>>> tup = [lst[x+1] for x in range(0, len(lst), 2)]
>>> names = [lst[x] for x in range(0, len(lst), 2)]
>>> b = []
>>> [b.append(x) for x in tup if x not in b]
>>> b
[(['1000.0'], None), (['1001.0'], None)]
>>> list(set(names))
['ACER', 'HP']

这可能是最好的解决方案,但它有助于解决您的问题。

您如何知道哪个元组对应于hp或acer?
isinstance(对象、类或类型或元组)
可以帮助您和一个
集合
删除重复项。@Yoopo,问题是,您不能将列表放在一个集合中-它们是可变的。但它对字符串有效。@TomZych true我的意思是对字符串有效。