python基础——过滤list的元素

fields=['t_decay','d_decay','t','d']
sub_fields = list(filter(lambda item: item.find('decay') > 0, fields))

sub_fields

['t_decay','d_decay']

列表解析表达式:

[expr for iter_val in iterable]
[expr for iter_val in iterable if cond_expr]

 

生成器表达式:

(expr for iter_var in iterable) 
(expr for iter_var in iterable if cond_expr)

生成器表达式并不真正创建数字列表, 而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来。 生成器表达式使用了“惰性计算”(lazy evaluation,也有翻译为“延迟求值”,我以为这种按需调用call by need的方式翻译为惰性更好一些),只有在检索时才被赋值( evaluated),所以在列表比较长的情况下使用内存上更有效。
 

一些说明:

1. 当需要只是执行一个循环的时候尽量使用循环而不是列表解析,这样更符合python提倡的直观性。

for item in sequence:
process(item)
2. 当有内建的操作或者类型能够以更直接的方式实现的,不要使用列表解析。

例如复制一个列表时,使用:L1=list(L)即可,不必使用:

L1=[x for x in L]
3. 当序列过长, 而每次只需要获取一个元素时,使用生成器表达式。

4. 列表解析的性能相比要比map要好,实现相同功能的for循环效率最差(和列表解析相比差两倍)。

5. 列表解析可以转换为 for循环或者使用map(其中可能会用到filter、lambda函数)表达式,但是列表解析更为简单明了,后者会带来更复杂和深层的嵌套。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,可以使用set()函数将列表转换为集合。集合具有去重和无序的特点。例如,如果有一个列表slist=[1,2,3,4,'a','b','a','b','c','c',1,2,3,4],可以使用set(slist)将其转换为集合。转换后的集合将去除重复的元素,并且是无序的。执行结果可能是{1, 2, 3, 4, 'a', 'b', 'c'},但顺序可能会变化。可以使用add()方法向集合中添加元素,例如sset.add('b'),即使添加一个已经存在的元素,集合内容也不会改变,重复的元素会自动被过滤掉。 另外,在Python中,还可以使用remove()方法删除集合中的元素。例如,如果有一个集合sset={1, 2, 3, 4, 'a', 'b', 'c'},可以使用sset.remove('a')来删除集合中的元素。删除后的集合可能是{1, 2, 3, 4, 'c', 'b'},删除元素后集合的顺序也可能发生变化。 总结起来,Python中的集合是无序的,元素是唯一的,一般用于对元组或列表中的元素进行去重。可以使用set()函数将列表转换为集合,使用add()方法向集合中添加元素,使用remove()方法删除集合中的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python——集合](https://blog.csdn.net/weixin_56039103/article/details/115733338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [python的集合格式以及方法](https://blog.csdn.net/Yan_1227/article/details/112849646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化橙同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值