Python十大列表操作技巧分享

 更新时间:2024年01月28日 11:49:29   作者:微小冷  
这篇文章给大家介绍了Python十大列表操作技巧分享,列表展开,降维,分块,转置,查找众数,判断重复元素等十个操作技巧,并通过代码示例给大家介绍的非常详细,需要的朋友可以参考下

列表展开

对于形如 [ 1 , [ 2 ] , [ [ 3 ] , 4 ] , 5 ] 的列表,将其展开为 [ 1 , 2 , 3 , 4 , 5 ]。算法思路为,遍历列表A0中的元素,如果该元素A1仍为列表,则将A1的元素追加到A0的末尾。

def flatten(lst):
    i = 0
    while(i<len(lst)):
        if isinstance(lst[i],list):
            lst.extend(lst[i])
        i += 1
    return [n for n in lst if not isinstance(n,list)]

lst = [1, [2], [[3], 4], 5]
flatten(lst)
# [1, 5, 2, 4, 3]

降维

当列表中的所有数据均为列表时,可以通过单星号索引之后,用itertools中的chain函数进行拼接。

from itertools import chain
a = [[1, 2], [3, 4], [5, 6]]
chain(*a)
# [1, 2, 3, 4, 5, 6]

分块

python内置了map函数,可以遍历列表并对每个元素进行映射。对于list(map(func,myList)),等价于[func(e) for e in myList]。根据这个特性,可以对列表进行分块。

from math import ceil   #ceil为向上取整

def chunkByFor(lst, size):
    return [lst[x*size:x*size+size] 
        for x in range(0,ceil(len(lst)/size))]

def chunkByMap(lst, size): 
    return list(
        map(lambda x: lst[x * size:x * size + size],    	
            list(range(0, ceil(len(lst) / size)))))    	

chunk([1,2,3,4,5],2) # [[1,2],[3,4],5]

转置

zip可以像拉链一样将数组中对应的值缝合起来,以元组的形式重新存储。根据这个特性,可完成列表的"转置"。

lst = [[1,2], [3,4], [5,6]]
list(zip(*lst))
#[(1, 3, 5), (2, 4, 6)]

查找众数

列表中封装了count方法,可以统计其中的元素个数,例如

lst =  [1,2,1,2,3,2,1,4,2]
lst.count(1)
# 3   即lst中1出现了3次

而最大值选取函数max中有一个参数key,表示选取最大值的依据,例如

x = [-2,-1,0,1,2]
def test(x): return x**2-2*x

max(x,key=test)
# -2

表示选出当函数test值最大时的自变量。

根据这两个特点,可以得到查找列表中出现次数最多元素的方法为

lst = [1,2,3,4,5,2,3,2,1,2,4]
max(set(lst),key=lst.count)	# 2

判断重复元素

借助集合中元素不重复的特性,可以检验非集合数据中是否有重复数据。下面代码种,set可将列表转换为集合,如果转换之后元素个数不变,则说明列表中没有重复元素。

def isUnique(lst):    	
    return len(lst) == len(set(lst)) 

x = [1,2,3,4,5,5]
y = [1,2,3,4,5]	
isUnique(x)	# False
isUnique(y)	# True

比较元素差异

在python中,集合set提供了类似做差的操作difference。对于集合AB而言,若想实现A-B的功能,可采取A.difference(B)的方案。

对于其他数据结构,可先转为set再行做差。且difference会自动将输入变量转为set

A = [1,2,3]
B = [1,2,4]
list(set(A).difference(B))	# [3]

比较列表计算后的差异

现有一函数func,对于两组数据AB,如果希望得到func(A)func(B)的差别,也可以采用set的特性。

def funcMinus(A, B, func):	
    B = set(map(func, B))     #剔除func(B)中的重复元素
    return [a for a in A if fn(a) not in B]	
  • 筛选数据

filter是python的内置函数,用于过滤不符合条件的数据。list(filter(func,myList))等价于[e for e in myList if func(e)==1]

为列表添加索引

enumerate可以将列表、元组等组合为索引序列,并可以声明初始值,例如

orders = ['first','second','third']
list(enumerate(orders))
# [(0, 'first'), (1, 'second'), (2, 'third')]
list(enumerate(orders,2))
# [(2, 'first'), (3, 'second'), (4, 'third')]

这可以非常方便地应用到for循环中

>>> for i,val in enumerate(orders,1):
...   print(i,val)
...
1 first
2 second
3 third

回文

在python中,对列表或者字符串采用:进行索引,例如a:b指的是从a到b的数据;当采用双引号::时,引号间的值的意义就发生了变化,例如a:b:c表示从a到b,间隔为c的数据。

据此,可以得到::-1表示将字符串颠倒过来,据此可以判断一个字符串是否为回文结构

>>> s = "abcde"
>>> s[::-1]
'edcba'
>>> s == s[::-1]
False

到此这篇关于Python十大列表操作技巧分享的文章就介绍到这了,更多相关Python列表操作技巧内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 循环函数详细介绍

    Python 循环函数详细介绍

    循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。感兴趣得小伙伴请参考下面文字得具体内容
    2021-09-09
  • python常用运维脚本实例小结

    python常用运维脚本实例小结

    这篇文章主要介绍了python常用运维脚本实例小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 如何使用Python对Excel表格进行拼接合并

    如何使用Python对Excel表格进行拼接合并

    这篇文章主要介绍了Python处理EXCEL基础操作篇3用Python对Excel表格进行拼接合并,文中提供了解决思路和部分实现代码,需要的朋友可以参考下
    2023-03-03
  • Python简单生成随机姓名的方法示例

    Python简单生成随机姓名的方法示例

    这篇文章主要介绍了Python简单生成随机姓名的方法,结合实例形式分析了Python基于random模块生成随机字符串组合的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • Python中print()函数的用法详情

    Python中print()函数的用法详情

    这篇文章主要介绍了Python中print()函数的用法详情,Python中print()函数的方法是打印指定的内容。在交互环境中输入“help(print)”指令,可以显示print()函数的使用方法,下面来看看具体的详细内容吧
    2022-02-02
  • Python-numpy实现灰度图像的分块和合并方式

    Python-numpy实现灰度图像的分块和合并方式

    今天小编就为大家分享一篇Python-numpy实现灰度图像的分块和合并方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 解析python的局部变量和全局变量

    解析python的局部变量和全局变量

    函数内部定义的变量就叫局部变量而如果一个变量既能在一个函数中使用,也可以在其他函数中使用,这样的变量就是全局变量。 本文给大家介绍python的局部变量和全局变量的相关知识,感兴趣的朋友一起看看吧
    2019-08-08
  • 在cmd中查看python的安装路径方法

    在cmd中查看python的安装路径方法

    在本篇文章里小编给大家整理的是关于怎样在cmd中查看python的安装路径的相关内容,有兴趣的朋友们学习参考下。
    2019-07-07
  • PyQt信号和槽机制的具体使用

    PyQt信号和槽机制的具体使用

    信号和槽机制是一种通信机制,在PyQt中,信号是一种特殊的函数,它可以传递任何类型的数据,而槽则是一种接收信号的函数,本文就介绍了PyQt信号和槽机制的具体使用,感兴趣的可以了解一下
    2023-08-08
  • python实现文件+参数发送request的实例代码

    python实现文件+参数发送request的实例代码

    这篇文章主要介绍了python实现文件+参数发送request的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论