iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >在pythonlist中筛选包含字符的字段方式
  • 846
分享到

在pythonlist中筛选包含字符的字段方式

2024-04-02 19:04:59 846人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录python list筛选包含字符的字段Python 列表筛选数据比如有以下两个列表先构造测试的列表比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效

python list筛选包含字符的字段

l = [‘123a',‘456b',‘789c']

ll = [s for s in l if ‘a' in s]

这是通过判断语句

lst = [“123a”, “456b”, “789c”]
lst = list(filter(lambda x: x.find(“a”) >= 0, lst))
print(lst)

这是通过函数

Python 列表筛选数据

在做数据处理中,常会遇到列表筛选

比如有以下两个列表

 

根据上列表中的KEY1 , 筛选下列表的数据,也就是标黄的数据。数量不大的情况,一般就是遍历比较,逻辑简单,几行代码搞掂。

但如果列表达到万,或者百万、千万,那遍历效率就低了。

先构造测试的列表

# 构造筛选目标列表,确保KEY不重复
n1 = 30000
n1_set = set([random.randint(1,n1)  for n in range(n1)])
n1 = len(n1_set)
list1 = [['1108{:0>6d}27'.fORMat(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',10))] for n in n1_set]
 
# 构造待筛选数据列表,确保KEY不重复
n2 = 100000
n2_set = set([random.randint(1,n2)  for n in range(n2)])
n2= len(n2_set)
list2 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',5)),n ] for n in n2_set]

比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效率

筛选目标18971条, 待处理数据63275条
遍历生成数据 耗时11.591秒 获得数据量 12024
['11080000427', 'eArVD', 4]
filter 耗时11.5秒 获得数据量 12024
['11080000427', 'eArVD', 4]
merge 耗时0.058秒 获得数据量 12024
['11080000427', 'eArVD', 4]
筛选目标189733条, 待处理数据632363条
遍历生成数据 耗时1597.4296秒 获得数据量 120180
['1108000000227', 'NkoEQ', 2]
filter 耗时1575.0432秒 获得数据量 120180
['1108000000227', 'NkoEQ', 2]
merge 耗时0.64秒 获得数据量 120180
['1108000000227', 'NkoEQ', 2]

经过比较, 直接遍历生成和列表生成式+filter的效率基本一致, pandas 的merge 效率最高。适合大批量数据处理。

上代码

print("筛选目标{}条, 待处理数据{}条".format(n1,n2))
 
# 直接遍历生成数据,计时
t1 = time.time()
list_temp = [n[0] for n in list1]
list3 = []
for n in list2:
    if n[0] in list_temp:
        list3.append(n)
t2 = time.time()
print("遍历生成数据 耗时{}秒".format(round(t2 - t1, 4)), "获得数据量", len(list3))
print(list3[0]) 
 
 
# 用filter筛选数据,计时
t1 = time.time()
list_temp = [n[0] for n in list1]
list3 = [n for n in filter(lambda x: x[0] in list_temp, list2)]
t2 = time.time()
print("filter 耗时{}秒".format(round(t2 - t1,4)), "获得数据量", len(list3))
print(list3[0])
 
 
# 用pd.merge 筛选数据,计时
t1 = time.time()
df1 = pd.DataFrame(list1, columns=['k1','m1'])
df2 = pd.DataFrame(list2, columns=['k1','m2','n2'])
df3 = pd.merge(df1[['k1']], df2, how='inner', on='k1')
t2 = time.time()
print("merge 耗时{}秒".format(round(t2 - t1,4)), "获得数据量", len(df3))
print(list(df3.iloc[0]))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 在pythonlist中筛选包含字符的字段方式

本文链接: https://www.lsjlt.com/news/120878.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在pythonlist中筛选包含字符的字段方式
    目录python list筛选包含字符的字段Python 列表筛选数据比如有以下两个列表先构造测试的列表比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效...
    99+
    2024-04-02
  • oracle怎么查询包含某字符串的字段
    要查询包含某字符串的字段,可以使用LIKE关键字。例如,如果要查询包含字符串“apple”的字段,可以使用以下查询语句: SELEC...
    99+
    2024-03-01
    oracle
  • 格式化包含 '%' golang 的字符串
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《格式化包含 '%' golang 的字符串》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我...
    99+
    2024-04-05
  • 怎么在JavaScript中判断字符串包含某个字符
    这篇文章将为大家详细讲解有关怎么在JavaScript中判断字符串包含某个字符,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript的特点1.JavaScript主要用来向HTM...
    99+
    2023-06-14
  • gRPC 方法可以返回包含字符串或 null 字段的消息吗?
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《gRPC 方法可以返回包含字符串或 null 字段的消息吗?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或...
    99+
    2024-04-05
  • MySQL字段包含某个值的方法(FIND_IN_SET)
    一、简介 当我们使用到包含的时候,可以使用in,但in有其局限性,比如:对于某个字段,值为a,b,c,那么在传入查询值a时,可以使用in查询到,即SELECT * FROM table_name where field ...
    99+
    2023-08-30
    mysql 数据库 sql
  • vue项目中字符串换行显示方式(返回的数据包含‘\r\n’字符)
    目录vue项目中字符串换行显示处理方法踩坑记录(记得抽空瞄一眼,很重要!) vue字符串换行问题及vue路由跳转传参总结vue项目中字符串换行显示 在vue项目中,请求后端...
    99+
    2023-05-17
    vue字符串 vue字符串换行 vue字符串换行显示
  • php判断字符是否包含在数组中
    在 PHP 开发中,我们经常需要对字符串进行处理和判断。而在判断字符串中是否包含某个字符时,我们可以使用 PHP 中的 in_array() 函数来实现。in_array() 函数用于判断一个值是否存在于数组中。该函数的语法如下:bool ...
    99+
    2023-05-22
  • 如何在PostgreSQL中判断字符串是否包含目标字符串
    如何在PostgreSQL中判断字符串是否包含目标字符串?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。方式一: position(substring in string):po...
    99+
    2023-06-06
  • php中包含字符的示例分析
    这篇文章将为大家详细讲解有关php中包含字符的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Pre...
    99+
    2023-06-14
  • 访问切片中包含的字符串
    php小编小新在这里为大家介绍如何访问切片中包含的字符串。在php中,切片是指从一个字符串中截取一部分字符的操作。通过访问切片中的字符串,我们可以获取所需的数据或者进行其他操作。在使用...
    99+
    2024-02-10
  • 如何在 PHP 中检查字符串是否包含一个子字符串
    本文将介绍在 PHP 中使用 strpos() 和 preg_match() 函数检查一个字符串是否包含子字符串的不同方法。 在 PHP 中使用 strpos() 函数检查一个字符串是否包含一个子字...
    99+
    2024-02-27
  • JQuery ID选择器中的不能包含特殊字符的处理方法
    这篇文章将为大家详细讲解有关JQuery ID选择器中的不能包含特殊字符的处理方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。问题的起因是动态生成的Dom...
    99+
    2024-04-02
  • js中如何使用indexOf() 方法判断字符串包含某个字符
    这篇文章主要介绍了js中如何使用indexOf() 方法判断字符串包含某个字符,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript是什么JavaScript是一...
    99+
    2023-06-14
  • 无法正确读取包含转义符的选项字符串
    来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《无法正确读取包含转义符的选项字符串》,介绍一下,希望对大家的知识积累有所帮助,助力实战开...
    99+
    2024-04-04
  • sql中的字符串包含;怎么存储
    在 sql 中存储包含分号的字符串时:使用转义字符 () 转义分号 (;)。使用 || 操作符连接包含分号的字符串。在某些情况下,使用双引号 (") 引起字符串,并转义每个分号。 SQ...
    99+
    2024-05-08
  • javascript判断字符串中是否包含某个字符串的方法有哪些
    小编给大家分享一下javascript判断字符串中是否包含某个字符串的方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!javascript判断字符串中是否包含某个字符串的方法:1、使用【indexOf()】方法可返...
    99+
    2023-06-14
  • navicat数据库筛选查询某一个字段的方法
    小编给大家分享一下navicat数据库筛选查询某一个字段的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!navicat是一个强大的数据库管理和开发工具。它为专业开发者提供了一套强大的足够尖...
    99+
    2024-04-02
  • mysql中的实现字段或字符串拼接的三种方式
    一、CONCAT函数 concat函数是将多个字段或字符串拼接为一个字符串;但是字符串之间没有任何分隔。 concat函数官方介绍 -- CONCAT函数的语法如下:CONCAT(str1,str2,...) 1.1、拼接非...
    99+
    2023-09-02
    mysql 数据库 sql Powered by 金山文档
  • java判断包含字符串的方法是什么
    Java中判断是否包含某个字符串的方法可以通过使用String类中的contains()方法来实现。contains()方法会返回一...
    99+
    2024-03-01
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作