计算一个列表中的项目数在另一个列表中

Denver Dang

假设我有两个非常大的列表(例如 1000 万行),其中包含一些值或字符串。我想弄清楚有多少项目从list1都在list2

因此,这可以通过以下方式完成:

true_count = 0
false_count = 0
for i, x in enumerate(list1):
    print(i)
    if x in list2:
        true_count += 1
    else:
        false_count += 1

print(true_count)
print(false_count)

这可以解决问题,但是,如果您有 1000 万行,这可能需要相当长的时间。是否有一些我不知道的甜蜜功能可以更快地做到这一点,或者完全不同的东西?

乔·芬兹

使用熊猫

以下是使用 Pandas 数据框的方法。

import pandas as pd
import random
list1 = [random.randint(1,10) for i in range(10)]
list2 = [random.randint(1,10) for i in range(10)]

df1 = pd.DataFrame({'list1':list1})
df2 = pd.DataFrame({'list2':list2})

print (df1)
print (df2)

print (all(df2.list2.isin(df1.list1).astype(int)))

我只是选择 10 行并生成 10 个随机数:

清单 1:

   list1
0      3
1      5
2      4
3      1
4      5
5      2
6      1
7      4
8      2
9      5

清单 2:

   list2
0      2
1      3
2      2
3      4
4      3
5      5
6      5
7      1
8      4
9      1

if 语句的输出将是:

True

我检查的随机列表是:

list1 = [random.randint(1,100000) for i in range(10000000)]
list2 = [random.randint(1,100000) for i in range(5000000)]

用 10 百万进行了测试。list1 中的随机数,500 万。list2 中的随机数,我的 Mac 上的结果又回来了2.207757880999999 seconds

使用集合

或者,您还可以将列表转换为集合并检查一个集合是否是另一个集合的子集。

set1 = set(list1)
set2 = set(list2)
print (set2.issubset(set1))

比较run的结果,set也很快。它回来了1.6564296570000003 seconds

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在另一个查询中查询以计算另一个表中的项目数量

如何计算也出现在另一个列表中的列表中的项目?

如何从另一个项目列表中过滤一个项目列表?

如何创建一个列表,其中包含对 Haskell 中另一个列表的每个项目的计算?

从另一个列表中删除项目

根据另一个列表的内容从一个列表中删除项目

Linq,将列表加入另一个列表中的最后一个项目

从jQuery中的另一个数组制作一个项目数组

将一个项目插入另一个处于反应状态的列表中

从另一个列表中的列表中的每个列表中提取相同的项目

根据另一个类型的另一个列表中的项目查找一个列表中的项目

将一个列表中的项目映射到另一个列表中的项目

将列表中的项目替换为另一个列表中的相应项目(Python)

在Python的for循环中获取与另一个列表中的项目匹配的列表中的项目

计算一个项目在列表中的出现次数,如果存在一次以上,则将其存储在另一个列表中

如何使用.count计算一个列表中每个项目出现在python中另一个列表中的次数?

计算列表中可被另一个数字整除的对象数

如何检查一个列表是否包含另一个列表子列表中的项目?

LINQ选择列表,其中子列表包含另一个列表中的项目

获取另一个列表内列表中的第n个项目

如何将一个列表的2个项目分组到另一个列表中

查找/匹配一个列表中另一个列表中每个项目的高效方法

根据另一个下拉列表中的选择限制一个下拉列表中的项目

如何检查一个列表中是否存在另一个列表中没有的项目?

另一个关联列表中的关联列表

在另一个列表中搜索列表值

删除另一个列表中的列表项

追加另一个列表中的列表

python从另一个列表中删除列表