列表、字典、集合的解析

2.1 列表的解析

2.1.1 使用filter筛选器
    filter(筛选条件,列表) filter有两个参数,第一个参    数是筛选条件,第二个参数是列表。筛选条件用lambda表达式

lambda表达式的书写格式为

lambda 变量: 表达式

这个表达式为bool类型,也就是说只要满足这个表达式就把函数返回值传给x。

值得注意的是从python 3.3之后 filter的返回值不再是一个列表而是一个iterators(迭代器) 是一个地址值。这里筛选需要一个强制类型转换list()。

代码部分:值得注意的是这个列表的生成格式

from random import randint
data=[randint(-10,10) for _ in range(10)]
data
[-1, -3, 3, 2, -4, 6, 4, -4, 6, 4]

首先写出[for i in range(10)]控制此列表循环几次。然后在循环条件的前面加上列表的元素值。[randint(-10,10) for _ in range(10)] 就生成了一个列表

筛选部分

list(filter(lambda x:x>=0,data))
[3, 2, 6, 4, 6, 4]

2.1.2 使用列表解析
    这里的列表解析就是使用for。方法如下

首先写出循环[for x in data]

写出列表元素[x for x in data]

最后写出筛选条件[x for x in data if x>=0]

[x for x in data if x>=0]
[3, 2, 6, 4, 6, 4]

2.2 字典的解析

2.2.1 字典的生成
首先还是要讲到字典的生成,字典的生成书写方式跟列表相似。

1.写出循环体
[for x in range(1,21)]

2.写出元素,注意这是是字典所以是 键:值 对应 。那个属于循环就是x;
[x:randint(60,100) for x in range(1,21)]

{x:randint(60,100) for x in range(1,21)}
{1: 89, 2: 72, 3: 100, 4: 77, 5: 98, 6: 97, 7: 63, 8: 90, 9: 64, 10: 73, 11: 87, 12: 93, 13: 95, 14: 99, 15: 62, 16: 71, 17: 83, 18: 94, 19: 89, 20: 100}

2.2.2 解析
这里解析使用for 经过测试for 要比 filter快一倍
书写方法
1.写出循环体
{for keys, value in d.items()}
解释一下,这里使用的是字典的items()函数,在2.x是iteritems()。这是一个字典,当然items也是一个键-值对应的,所以这里的循环index需要两个,keys,value。

2.写出字典的元素(其实也就是字典形式)
{keys:value for keys, value in d.items()}
注意这里的字典元素是根据keys,value循环而来的,所以说需要名称对应。

3.写出筛选条件
{keys:value for keys, value in d.items() if x>90}

{keys:value for keys,value in d.items() if value>90}
{16: 99, 1: 94, 4: 91, 12: 96}的

2.3 集合的解析

2.3.1 集合的建立
使用set(list)

s=set(data)
s
{2, 3, 4, 6, -4, -3, -1}
把2.1 的列表变成了一个集合。集合去除了重复的元素

2.3.2 集合的筛选
使用for
1.老样子写出循环体
{for x in s}

2.写出元素
{x for x in s}

3.写出筛选条件
{x for x in s if x>=0}

{x for x in s if x>=0}
{2, 3, 4, 6}

over~ 敬请期待

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值