鱼C论坛

 找回密码
 立即注册
查看: 1502|回复: 2

[技术交流] 【001】Python在列表、集合、字典中筛选数据

[复制链接]
发表于 2019-6-7 18:00:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
'''
目的:随机生成10个元素到a,筛选大于5的元素到b
'''
from random import randint

#列表筛选(1.列表推导式)
a=[randint(1,9) for x in range(10)]
print(a)
b=[x for x in a if x > 5]
print(b)

#列表筛选(2.高阶函数)
a=[randint(1,9) for x in range(10)]
print(a)
b=filter(lambda x : x > 5,a)
print(list(b))

#dict字典筛选
a={x:randint(1,9) for x in range(10)}
print(a)
b={x:y for x,y in a.items() if y > 5}
print(b)

#set集合筛选
a={0,1,2,3,4,5,6,7,8,9}
a=set(a)
print(a)
b={x for x in a if x > 5}
print(b)

#简单的列表去重操作
a=[1,1,2,3,3,4]
b=list(set(a))
print(b)
'''
提问与思考:
在最后做set集合生成随机数的时候,发现并不能每次都生成10个,而是小于10个,
于是基础不太扎实的我查阅了一些资料才想起来set集合里的元素有不重复的特性,
所以每次随机生成的元素如果重复了会自动去重,去重后就只剩下不到10个元素啦,
于是利用这一特性,在最后我又多贴了一个简单的列表去重操作
'''

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-8 12:58:42 | 显示全部楼层
from random import randint

b = set()

a = [b.add(randint(5, 9) ) for _ in range(10)]

print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-8 13:57:14 | 显示全部楼层
kaohsing 发表于 2019-6-8 12:58
from random import randint

b = set()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表