Python中如何将列表的列表转换成简单的列表,并删除过滤掉重复的元素

有时候需要将一个列表的列表(矩阵或张量)转换成列表,然后再进行处理。最近发现一个处理这种问题的小技巧,不用每次写一段代码就可以完成了。

假设有一个列表的列表如下:

a=[["1","2"],["1","2"]]

我们想获取这个列表中所有的元素值(注意不是元素的值)。最直白的方法就是写两个for循环,如下:

>>> b=set()
>>> for i, ie in enumerate(a):
...     for j, je in enumerate(a[i]):
...     	b.add(a[i][j])
... 
>>> b
{'2', '1'}

但是还有一种更快速的办法:

>>> set(sum(a,[]))
['1', '2']

sum(a,[])将列表的列表转化成列表,功能相当于前面那两个for循环,而set()则会过滤掉重复的元素值(设置的时候已经有了就不会重复设置)。

不过需要注意此时的set(sum(a,[]))并不是一个列表。但是如果你需要排序,那么sorted(set(sum(a,[])))的返回就是一个列表。如果没有使用这种函数进行处理,那么就要使用list(set(sum(a,[]))进行类型转换。

这样可以大大减少代码量,学会之后写的也更方便。

希望能帮到有需要的人~

你可能感兴趣的:(Web,笔记,python)