考虑这组列表:
[
["2" , "a" , "yes" , "next year"],
["2" , "b" , "yes" , "next year"],
["2" , "c" , "yes" , "next year"],
["2" , "a" , "yes" , "next 5 years"],
["2" , "a" , "yes" , "next year"],
["2" , "d" , "yes" , "next year"],
]
我想获取这些列表并删除所有列表中相同的所有“单元格”: 所以对于上面提到的数据,结果应该是:
[
["a", "next year"],
["b", "next year"],
["c", "next year"],
["a", "next 5 years"],
["a", "next year"],
["d", "next year"],
]
删除了“2”和“是”的列,因为它们在所有行中都是相同的。
我正在寻找一种有效的方法,因为我处理的是一大堆物品。
另外我想保留每个列表的顺序(我不关心外部列表中列表的顺序),你可以假设没有2个相同的行。
答案 0 :(得分:2)
如果len(set(i))>1
这意味着所有条目都不相同,那么你可以使用它:
>>> map(list,zip(*[i for i in zip(*l) if len(set(i))>1]))
[['a', 'next year'], ['b', 'next year'], ['c', 'next year'], ['a', 'next 5 years'], ['a', 'next year'], ['d', 'next year']]