Python 如何对含有重复列表的列表求集合?

Python的编程中,我们希望简约含有重复列表的列表,即对含有重复列表的列表求其集合,这个需求还是比较常见的。例如:

L = [['Banana'],['Orange'],['Orange'],['Orange'],[],[],[],['Mango','Strawberry'],['Apple'],['Mango', 'Strawberry'], ['Mango','Strawberry']]

我们想求这类列表的集合,如果直接用set命令,会得到TypeError的错误。

>>> L

[['Banana'], ['Orange'], ['Orange'], ['Orange'], [], [], [], ['Mango', 'Strawberry'], ['Apple'], ['Mango', 'Strawberry'], ['Mango', 'Strawberry']]

>>> set(L)

 

Traceback (most recent call last):

  File "<pyshell#86>", line 1, in <module>

    set(L)

TypeError: unhashable type: 'list'

 

为了删除重复的列表,每个列表仅保留一个,我编写如下的程序:

 

# Author:Li Xing Mar 2nd,2018

# Simplied the multi-lists

def list_simplied(org_lst):

    lst_len = len(org_lst)

    if lst_len == 0 or lst_len == 1:

        return org_lst

    else:

        simplied_lst = []

        repeated_index =[]

        for i in range(lst_len):

            if i in repeated_index:

                continue

            else:

                temp = org_lst[i]

                for j in range(i+1,lst_len):

                    if org_lst[j] == temp:

                        repeated_index.append(j)

                simplied_lst.append(temp)

        return simplied_lst

>>> list_simplied(L)

[['Banana'], ['Orange'], [], ['Mango', 'Strawberry'], ['Apple']]

list_simplied函数的对象item,可以是元素、列表、字典等等,例如:

>>> lst = [1,1,3,4,5,6,6,6,7]

>>> list_simplied(lst)

[1, 3, 4, 5, 6, 7]

>>> x = [{1:'a',2:'b',3:'c'},{1:'a',2:'b',3:'c'},{},{}]

>>> list_simplied(x)

[{1: 'a', 2: 'b', 3: 'c'}, {}]

喜欢的话,点个赞吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值