Python 官方文档:入门教程 => 点击学习
目录python list筛选包含字符的字段Python 列表筛选数据比如有以下两个列表先构造测试的列表比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效
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)
这是通过函数
在做数据处理中,常会遇到列表筛选
根据上列表中的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]
筛选目标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文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0