【问题标题】:how to count() within list index如何在列表索引中计数()
【发布时间】:2021-04-09 22:50:01
【问题描述】:

我有一个二维列表。

[[3, 3, 5],
[3, 2, 8],
[2, 1, 3]]

我想计算 3 作为该列表中每个列表的第一个值出现的次数,最好不要遍历。

【问题讨论】:

标签: python


【解决方案1】:

一种不使用for循环的方法:

len(list(filter(lambda x: x[0] == 3, arr)))

输出:

2

【讨论】:

    【解决方案2】:

    list 理解试试这个sum

    print(sum([i[0] == 3 for i in lst]))
    

    输出:

    2
    

    【讨论】:

    • 计算每个值,但我只是在寻找特定的索引。在这个例子中,正确的输出是 2。
    【解决方案3】:
    from collections import Counter
    
    
    lst = [[3, 3, 5],
    [3, 2, 8],
    [2, 1, 3]]
    
    
    print (Counter(sublist[0] for sublist in lst)[3])
    

    您可以使用计数器功能。提及您要在子列表中查看的位置,以及您要为其打印结果的键(即整数 3)。

    输出:

    2
    

    【讨论】:

    • 这不是很贵吗,因为我们只对列表列表中每个元素的固定位置感兴趣?
    • 当然,但谁知道 OP 想用它做什么。如果仅限于这个问题,考虑到数据的长度,扩展性不是问题。
    【解决方案4】:

    仅使用 numpy:

    import numpy as np
    
    a = [[3, 3, 5],
    [3, 2, 8],
    [2, 1, 3]]
    b = a[:, 0]
    c = np.where(b == 3)
    print(c[0].shape[0])
    

    仅使用熊猫:

    import pandas as pd
    
    a = [[3, 3, 5],
    [3, 2, 8],
    [2, 1, 3]]
    df = pd.DataFrame(a)
    print(df[df[0] == 3].shape[0])
    

    输出:

    2
    

    【讨论】:

      【解决方案5】:

      您只需要在切片和比较方面检查输入数字的顺序。

      根据python 3.8

      代码语法

      lists = [[3, 3, 5], [3, 2, 8], [2, 1, 3]]
      num = int(input("check our number: "))
      counter = 0
      for each in lists:
          if num == each[0]:
              counter +=1
          
      print (f" your {num} occur found: {counter} times ")
      

      输出

      check our number: 3
       your 3 occur found: 2 times
      
      [Program finished]
      

      【讨论】:

        【解决方案6】:

        如果您不想使用循环,我认为来自 itertools 的链可能是解决方案

        from itertools import chain
        t=[[1, 2, 3], [3, 5, 6], [7], [8, 9]]
        new_list = list(chain(*t))
        print(new_list)
        

        输出 [1、2、3、3、5、6、7、8、9]

        在此之后,您可以使用 count 函数 this 'new_list' 来检查任何元素的计数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-25
          • 2012-04-25
          • 1970-01-01
          • 1970-01-01
          • 2020-06-30
          • 1970-01-01
          相关资源
          最近更新 更多