Python中列表,集合和字典的推导式

列表推导式是最受欢迎的python语言特性之一。它允许你过滤一个容器的元素,用一种简明的表达式转换传递给过滤器的元素,从而生成一个新的列表。

推导式

列表表达式的最基本形式为:[expr for val in collection if condition]

过滤条件是可以忽略的,只保留表达式。例如:

strings = ['a','os','sex','urge','apple','python']

[x.upper() for x in strings if len(strings)>2]#输出['sex','urge','apple','python']

集合与字典的推导式是列表推导式的自然拓展,用类似的方法生成集合与字典。

字典的推导式如下:

dict_comp = {key-expr : value-expr for value in collection if condition}

集合推导式看起来很像列表推导式,只是中括号变成了大括号:

set_comp = {expr for value in collection if condition}

通过集合推导式设置一个集合包含列表中字符串的长度:

{len(x) for x in strings}

也可以用map函数更函数化,很简洁地表达:

set(map(len,strings))

创建一个字符串与其位置匹配的字典:

loc_mapping = {val : index for index,val in numerate(strings)}

嵌套列表推导式

all _name = [['john','emily','michael','mary','steven'],['maria','juan','javier','natalia','pilar']]

获得一个列表包含两个以上的字母e的名字:

result = [name for names in all_name for name in names if name.count('e') >= 2]#输出['steven']

列表推导式的for循环部分是根据嵌套的顺序排列的,所有的过滤条件像之前一样被放在尾部。

将含有整数元组的列表扁平化唯一个简单的整数列表:

some_tuplies = [(1,2,3),(4,5,6),(7,8,9)]

flattened = [x for tup in some_tuples for x in tup]#输出[1,2.3,4,5,6,7,8,9]

列表推导式中的列表推导式也是非常有效的:

[[x for x in tup] for tup in some_tuples]#[[1,2,3],[4,5,6],[7,8,9]]

创建一个包含列表的列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值