像这样操作 Python 列表,能让你的代码更优雅

写 Python 代码,列表的出镜率是相当高的,伴随列表一起出现的往往就是一大堆 for 循环,这样的代码多了看起来非常不简洁。作为一名 Python 程序员,怎么能忍受呢?

那有没有什么好办法呢?除了列表表达式之外,其实还有一些小技巧来操作列表,可以使代码更简洁,更优雅。下面介绍几个常见的使用场景,分享给大家。

一、列表合并

第一种方式:循环。

>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> for i in b:...     a.append(i)...>>> a[1, 2, 3, 4, 5, 6]

这种方式最不友好了,也不建议使用。

第二种方式:使用 +。

>>> a + b[1, 2, 3, 4, 5, 6]

第三种方式:使用 extend 关键字。

>>> a.extend(b)>>> a[1, 2, 3, 4, 5, 6]

后两种方式明显更加优雅,推荐使用。需要说明的一点是,如果列表很大的话,+ 会比较慢,使用 extend 更好。

二、列表元素去重

使用 set() 对列表元素进行去重。

>>> a = [1, 2, 3, 4, 2, 3]>>> list(set(a))[1, 2, 3, 4]

三、列表排序

使用 sort() 或内建函数 sorted() 对列表进行排序。它们之间的区别有两点:

  1. sort() 方法是对原列表进行操作,而 sorted() 方法会返回一个新列表,不是在原来的基础上进行操作。
  2. sort() 是应用在列表上的方法,而 sorted() 可以对所有可迭代的对象进行排序操作。
# sort()>>> a = [1, 2, 3, 4, 2, 3]>>> a.sort()>>> a[1, 2, 2, 3, 3, 4]>>>>>> a = [1, 2, 3, 4, 2, 3]>>> a.sort(reverse=True)>>> a[4, 3, 3, 2, 2, 1]# sorted()>>> a = [1, 2, 3, 4, 2, 3]>>> sorted(a)[1, 2, 2, 3, 3, 4]>>> a = [1, 2, 3, 4, 2, 3]>>> sorted(a, reverse=True)[4, 3, 3, 2, 2, 1]

四、遍历列表的索引和元素对

使用 enumerate() 函数可以同时输出索引和元素值。

>>> a = ['python', 'go', 'java']>>> for i, v in enumerate(a):...     print(i, v)# output0 python1 go2 java

五、查找列表中出现最频繁的元素

使用 max() 函数可以快速查找出一个列表中出现频率最高的某个元素。

>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2]>>> b = max(set(a), key=a.count)>>> b4

需要说明的一点是,当列表中有两个元素出现的次数相同时,会返回第一个出现的元素。

>>> a = [1, 2]>>> b = max(set(a), key=a.count)>>> b1

六、统计列表中所有元素的出现次数

前面的代码给出了出现最频繁的值。如果想要知道列表中所有元素的出现次数,那么可以使用 collections 模块。collections 是 Python 中的一个宝藏模块,它提供了很多特性。Counter 方法正好可以完美解决这个需求。

>>> from collections import Counter>>>>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2]>>> Counter(a)Counter({4: 4, 2: 2, 3: 2, 1: 1, 5: 1})

七、将两个列表合并为词典

使用 zip() 函数,可以将两个列表合并成字典。

>>> a = ['one', 'tow', 'three']>>> b = [1, 2, 3]>>> dict(zip(a, b)){'one': 1, 'tow': 2, 'three': 3}

以上。

(0)

相关推荐

  • 看完这道题,你才能领略Python的魅力!

    近日浏览LeetCode,发现了一道很有意思的小题目.当我尝试用Python解答的时候,居然动用了集合.map函数.zip函数.lambda函数.sorted函数,调试过程还涉及到了迭代器.生成器.列 ...

  • 通过“四不要”,掌握 Python 的 Lambda 函数

    原文地址:Master Python Lambda Functions With These 4 Don'ts 原文作者:Yong Cui, Ph.D. 译文出自:掘金翻译计划 本文永久链接:http ...

  • 收藏!20条非常实用的Python代码实例

    据说Python之父-Guido Van Rossum打算让CPython更快,速度直接翻五倍,这是实实在在的好消息. Python一直以来被诟病速度慢,影响开发效率,希望这次Guido老爷子能帮py ...

  • 30个极简Python代码,拿走即用(真干货)

    重复元素判定 def all_unique(lst): return len(lst)==len(set(lst)) x = [1,1,2,2,3,2,3,4,5,6] y=[1,2,3,4,5] a ...

  • python 面试题-收集100+面试题笔试题

    前言 收集了100多道 Python 基础练习题,面试题,笔试题,练完这些题 Python 内功大增!适合python初学者和基础不牢的同学练手. 想刷面试题的也可以多看看,答案在网易云平台课程上ht ...

  • Python列表与元组有什么相同点?基础分享!

    无论从事Python相关工作还是刚刚学习Python,想必大家都听说过Python列表和元祖吧,而且经常有人将他们混为一谈,那么你知道Python列表和元组有什么相同点和不同点吗?我们通过这篇文章来看 ...

  • Python列表与元组有什么作用?入门分享!

    Python数据类型分为七大类,其中最为常见的就是列表和字典,是使用Python必须掌握的基础.那么Python列表和字典有什么不同之处?我们一起来看看吧. 列表 1. 任意对象的有序集合,列表是一组 ...

  • 什么是Python列表?与元组有何区别?

    Python中,有三种内建的数据结构,列表.元组和字典,那么它们之间有什么区别呢?我们通过这篇文章来看看吧. 什么是Python列表? 列表是由一系列按特定顺序排列的元组组成的.在Python中,用[ ...

  • python列表

    列表list是python中最常用的数据类型,其类似于其他语言中的数组,但也有不同,主要的区别在于list中的元素可以是不同的数据类型. 1.列表的创建 创建一个列表,只要用方括号把数据项括起来即可. ...

  • 4.Python列表/元组/集合/字典

    碧茂大数据 前天 4.1 Python列表 · 列表用 [ ] 标识,是Python 最通用的复合数据类型. · 列表用 [ ] 表示,列表具有可嵌套性 4.1.1 Python列表截取 · 列表可以 ...

  • Python 列表的应用场景有哪些?你使用对了吗?

    我们在前几篇文章中依次介绍了列表的特性和用法.列表推导式.列表的底层实现.今天来聊一聊列表在实际开发中的应用场景. 在开发中,选用何种数据结构是由我们面对的数据特征和业务场景决定的. 数据是单个的还是 ...

  • 从 Python 列表的特性来探究其底层实现机制

    " list 之所以好用归功于底层巧妙的设计" 列表(list)是 Python 中一个非常重要且常见的数据结构,它有很多易用的特性:可索引([index]),可切片([start ...

  • Python数组和Python列表的区别!

    众所周知,Python数据类型分为很多种,其中包括元组.字典.列表等.今天这篇文章主要为大家介绍一下Python数组和Python列表的区别,希望对你们有所帮助. Python中的list是Pytho ...

  • Python 列表(List) | 菜鸟教程

    Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型 ...