Python转换列表&&数据去重&&集合

转换列表是一个很常见的需求,因此Python提供了一个工具。可以尽可能毫不费力第完成这种转换。工具名称:列表推导(list comprehension)设计列表推导是为了减少将一个列表转换为另一个列表时所需编写的代码量。


一些例子:

>>> mins = [1,2,3]
>>> secs = [m*60 for m in mins]
>>> secs
[60, 120, 180]
>>> lower = ["I","don't","like","spam"]
>>> upper = [s.upper() for s in lower]
>>> upper
['I', "DON'T", 'LIKE', 'SPAM']
>>> dirty = ['2-22','2:33','2.22']
>>> clean = [nester.sanitize(t) for t in dirty]
>>> clean
['2.22', '2.33', '2.22']
>>> clean = [float(s) for s in clean]
>>> clean
[2.22, 2.33, 2.22]


上一篇博客中的代码可用列表推导修改为:

print(sorted([float(nester.sanitize(t)) for t in james_list]))


运行结果:

[2.01, 2.01, 2.22, 2.34, 2.34, 2.45, 3.01, 3.1, 3.21]

=============================================================

那么如何拿到排名前三的数据项,而且保证没有重复呢?


迭代删除重复项

重复项删除过滤器需要在列表创建过程中检查所创建的列表,这对于列表推导来说是无法做到的。


为了满足这个新需求,你需要求助于常规的列表迭代代码。

james_new_list = sorted([float(nester.sanitize(t)) for t in james_list])
james_unique_list = []
for each_t in james_new_list:
    if each_t not in james_unique_list:
        james_unique_list.append(each_t)
print(james_unique_list[0:3])

运行结果:

[2.01, 2.22, 2.34]

用集合删除重复项

Python中集合最突出的特性是结合中的数据项是无序的,而且不允许重复。如果试图向一个集合增加一个数据项,而该集合中已经包含有这个数据项,Python就会将其忽略。

使用set()BIF创建一个空集合,这是工厂函数的一个例子:

distances = set()



>>> james_unique_list = set(james_new_list)
>>> james_unique_list
{2.22, 3.1, 3.21, 2.01, 3.01, 2.34, 2.45}
>>> print(sorted(james_unique_list)[0:3])
[2.01, 2.22, 2.34]



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值