【问题标题】:How to count different elements in list of lists?如何计算列表列表中的不同元素?
【发布时间】:2020-05-12 11:44:57
【问题描述】:

我想计算列表列表中唯一列表的数量。 例如,

>>>list1 = [[1,2,3],[1,2,3],[1,2,2],[1,2,2]]

>>>how_many_different_lists(list1)

>>>2 #They are [1,2,3] and [1,2,2]

如何创建 how_many_different_lists 函数?

【问题讨论】:

标签: python list count


【解决方案1】:

这是工作代码:

from copy import deepcopy

def how_much_dif_l(arg):
    arg_list=deepcopy(arg)
    i=0
    length=len(arg_list)
    while i<length:
        a = arg_list[i]
        if arg_list.count(a)>1:
            length-=1
            arg_list.remove(a)
        else: 
            i+=1


    return len(arg_list)

list1= [[1,2,3],[1,2,3],[1,2,2],[1,2,2]]
print(how_much_dif_l(list1))

【讨论】:

  • 这不应该被接受。您正在更改原始列表,从中删除项目。这不是最好的主意。
  • @revliscano 如果需要,可以使用 deepcopy()
  • @revliscano 已完成,警官!
  • 顺便说一下,清除 if 条件周围的括号和 i += 1 之后的分号也是一个好主意 :-)
  • 另一件事:我正在用另一组数据测试它,例如:[[1, 2, 3], [1, 2, 3], [1, 2, 2], [1, 2, 2], [2, 2], [1, 2, 2], [2, 5], [1, 2, 3], [2, 5]] 它会抛出一个IndexError 那是因为length -= 1被放置在错误的位置。
【解决方案2】:

如果您只需要知道有多少不同的列表,您可以这样做:

def how_many_different_lists(lists):
    s = set(str(list_) for list_ in lists)
    return len(s)

你可以这样调用这个函数:

>>> list1 = [[1,2,3],[1,2,3],[1,2,2],[1,2,2]]
>>> how_many_different_lists(list1)
2

【讨论】:

    【解决方案3】:
    lis = [[1, 2, 3], [1, 2, 3], [1, 2, 2], [1, 2, 2]]
    import itertools
    lis.sort()
    print(list(lis for lis,_ in itertools.groupby(lis)))
    

    以上代码输出

    [[1, 2, 2], [1, 2, 3]]
    

    你也可以这样做

    l = []
    for i in lis:
        if i not in l:
            l.append(i)
    

    或者

    l = [lis[i] for i in range(len(lis)) if i == 0 or lis[i] != lis[i-1]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 2013-12-02
      相关资源
      最近更新 更多