如何在列表索引中计数()

Posted

技术标签:

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

我有一个二维列表。

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

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

【问题讨论】:

“不迭代列表”是什么意思?您是否出于某种原因要避免 for 循环和列表推导? 这能回答你的问题吗? How do I flatten a list of lists/nested lists? 【参考方案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' 来检查任何元素的计数

【讨论】:

以上是关于如何在列表索引中计数()的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中显示一个表中的所有行并从另一个表中计数

如何在 Slick 2.0 中计数(*)?

在 hive mapreduce 中计数 desc

在访问报告中计数

在 PySpark Dataframe 中计数零次出现

如何在 Python 中计算学生化残差?