详解Python中的List 2

目录
  • list比tuple多了这些操作支持
  • 除了删除,list怎么添加/扩充元素呢?
  • list的排序
  • 总结

list比tuple多了这些操作支持

前面学委提到tuple(元组)就是焊死了的一串串车厢,list支持元素编辑,明显灵活多了。

我们先看看删除操作,python中的list就支持了3中删除元素的操作。

假设我们定义一个列表对象 list_obj, 那么我们可以执行下面任意一个操作,进行元素删除。

del list_obj[下标]
list_obj.remove(某个元素值)
list_obj.pop(下标) #返回元素值

好,我们看看下面完整代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/31 10:36 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : list_demo4.py
# @Project : hello
# 删除列表元素
mylist = [1, 0, 2, 4, "雷学委"]
print("mylist:", mylist)
del mylist[0]
print("after remove first element, mylist:", mylist)
mylist.remove("雷学委")
print("after remove first element, mylist:", mylist)
removed_value = mylist.pop(1)  # 移除并返回的元素值
print("after remove first element, mylist:", mylist)
print("removed value:", removed_value)

效果如下:

特别需要注意的是:删除元素不能超过list的下标范围,否则报错!

除了删除,list怎么添加/扩充元素呢?

先不说修改的,list也支持定位查找元素,我们先看看。

list_obj.index(某个元素值) #通过某个元素值定位到第一个匹配的下标,从0位置开始找。

假设list_obj = [3, 2, 1] 那么list_obj.index(2) 则是什么?

答案是:1。

好,我们继续说插入新元素。

# python中的list支持下面两种方式追加元素
list_obj.insert(指定下标, 元素)
list_obj.append(元素) #末尾追元素

那么一次性追加多个,或者直接扩充某个列表到现有列表呢?

我们找到了extend函数,使用list_obj.extend(补充列表) 就能把list_obj直接扩充了,效果是依次追加补充列表的元素到末尾。

说这么多操作,我们直接复制运行下面的代码看看:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/31 10:36 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : list_demo5.py
# @Project : hello
# 列表的其他函数
mylist = [6, 6, 6]
print("mylist:", mylist)
mylist.append("雷学委")
print("mylist:", mylist)
print("列表多少个6?:", mylist.count(6))
print("第一个6的位置下标?:", mylist.index(6))
mylist.insert(2, 1024)
print("第一个1024的位置下标?:", mylist.index(1024))
last = mylist.pop() #删除操作前面说过了,这几举例一个。
print("最后的元素是:",last)
print("mylist:", mylist)
# 直接追加新列表
mylist.extend(mylist)  # 相当于mylist = mylist * 2
print("mylist:", mylist)
mylist.extend(['持续学习', '持续开发'])
print("mylist:", mylist)

这是代码运行效果:

非常简便,我们继续看看列表元素排序

list的排序

前面说的都是编辑操作,list也可以进行数据排列,也就是按照一定逻辑进行顺序排列。

list提供了一个sort函数和reverse函数。

先说简单的,reverse函数相当于把整个串串车厢直接调头。也就是list:[1,2,3] 经过reverse函数处理后,变成了[3,2,1]。

sort则更加弹性,默认安装元素面值(比如数字,数字串),还支持传入一个lambda函数,指定排序逻辑。

以上函数默认会对一个数字组成的数组进行按数字面值大小排序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/31 10:36 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : list_demo6.py
# @Project : hello
# 列表的其他函数
mylist = [2, 3, 1]
#mylist = ["2", "3", "1"]
mylist.sort()
print("mylist:", mylist)
mylist.extend(['持续学习', '持续开发'])
print("mylist:", mylist)
mylist.sort(key=lambda e: len(str(e)), reverse=True)
print("sorted mylist:", mylist)
mylist.reverse()
print("reversed mylist:", mylist)

效果如下,读者可以仔细看看是否如学委所说。

特别注意:学委上面示例代码也展示了,如果一个列表内元素不是同一类型(都是数字,都是字符串或者都是某个类型),开发者必须实现一个lambda函数给sort函数作为参考进行排序。

总结

list有很多功能,进行元素的操作(添加/删除/定位)等非常方便。

而且还能轻易扩充,排序,逆序等,这让list的使用非常广泛

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 详解Python多线程下的list

    list 是 Python 常用的几个基本数据类型之一.正常情况下我们会对 list 有增删改查的操作,显然易见不会有任何问题.那么如果我们试着在多线程下操作list 会有问题吗? 多线程下的 list 安全 or 不安全? 不安全! 通常我们说的线程安全是指针对某个数据结构的所有操作都是线程安全,在这种定义下,Python 常用的数据结构 list,dict,str 等都是线程不安全的 尽管多线程下的 list 是线程不安全的,但是在 append 的操作下是它又是线程安全的. 如何判断线程安

  • Python源码解析之List

    一.列表结构体 创建列表C语言底层的结构体 lists = [] list.append('name') list.append('age') list.append('grade') typedef struct{ struct _object *_ob_next; struct _object *_ob_prev; // python内部将对象放在链表进行内存管理 Py_ssize_t ob_refcnt; // 引用计数器,就是多少变量用了它 PyObject **ob_item; //

  • 详解python中list的使用

    1.list(列表)是一种有序的集合,可以随时添加.修改.删除其中的元素. 举例:listClassName = ['Jack','Tom','Mark'] 列表可以根据索引获取元素,如:listClassName[0] : 列表索引是从0开始的,最后一个元素索引是len(listClassName)-1: 如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素: 1.1 获取列表个数(长度):用len()函数,可以获取列表元素的个数(元素从1开始计算的):len(l

  • 详解Python中的List

    目录 什么是list? list 可以进行哪些操作呢? 动态长度参数传递 参数是否会被函数攥改? list 这种对象能执行啥操作? tuple 转list 说这么多,好像漏了点啥?遍历列表还没有展示呢. 总结 什么是list? list 是一个序列!一串数据,这个串可以追加数据. 我们可以把它看成大型商场内,儿童游玩串串车,它就像一趟一趟车厢一样,可以挂上去(还能增加车厢). 这样tuple(元组)就是焊死了的串串车! 在数据结构中,我们也学习过链表,某种程度上list就是python给出的一个

  • python给list排序的简单方法

    大家有没有发现,当在网站上检索,想找到的内容,输入一个关键词时,检索栏下会出现输入关键词的拓词和问题.输入的关键词越多,越有可能找的你想要的问题.其实会出现这种情况是由于计算机算法的排序,会根据关键词关联.搜索量等原因排序.那你知道在python中如何给列表排序吗?今天,小编教教大家如何给列表排序. sort()方法 会对list中元素按照大小进行排序 list.sort(key=None,reverse=False) 实例: In [57]: l=[27,47,3,42,19,9] In [5

  • Python列表(List)知识点总结

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

  • 详解python中executemany和序列的使用方法

    详解python中executemany和序列的使用方法 一 代码 import sqlite3 persons=[ ("Jim","Green"), ("Hu","jie") ] conn=sqlite3.connect(":memory:") conn.execute("CREATE TABLE person(firstname,lastname)") conn.executeman

  • 详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别

    详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别 os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit().本文介绍这两种方式的区别和选择. os._exit()会直接将python程序终止,之后的所有代码都不会继续执行. sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那

  • 详解 Python中LEGB和闭包及装饰器

    详解 Python中LEGB和闭包及装饰器 LEGB L>E>G?B L:local函数内部作用域 E:enclosing函数内部与内嵌函数之间 G:global全局作用域 B:build-in内置作用域 python 闭包 1.Closure:内部函数中对enclosing作用域变量的引用 2.函数实质与属性 函数是一个对象 函数执行完成后内部变量回收 函数属性 函数返回值 passline = 60 def func(val): if val >= passline: print (

  • 详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os.getcwd()) Current directory is D:\Python36 2.代码2 如果将上面的脚本写入到文件再运行 Current directory is E:\python\work 二 获得目录的内容 Python代码 >>> os.listdir (os.getcwd

  • 详解python中的 is 操作符

    大家可以与Java中的 == 操作符相互印证一下,加深一下对引用和对象的理解.原问题: Python为什么直接运行和在命令行运行同样语句但结果却不同,他们的缓存机制不同吗? 其实,高票答案已经说得很详细了.我只是再补充一点而已. is 操作符是Python语言的一个内建的操作符.它的作用在于比较两个变量是否指向了同一个对象. 与 == 的区别 class A(): def __init__(self, v): self.value = v def __eq__(self, t): return

  • 详解python中asyncio模块

    一直对asyncio这个库比较感兴趣,毕竟这是官网也非常推荐的一个实现高并发的一个模块,python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? 异步网络操作并发协程 python3.0时代,标准库里的异步网络模块:select(非常底层) python3.0时代,第三方异步网络库:Tornado python3.4时代,asyncio:支持TCP,子进程 现在的asyncio,有了很多的模块已经在支持:aiohttp,ai

  • 详解python中的线程

    Python中创建线程有两种方式:函数或者用类来创建线程对象. 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程. 类:创建threading.Thread的子类来包装一个线程对象. 1.线程的创建 1.1 通过thread类直接创建 import threading import time def foo(n): time.sleep(n) print("foo func:",n) def bar(n): time.sleep(n) prin

  • 详解Python中pyautogui库的最全使用方法

    在使用Python做脚本的话,有两个库可以使用,一个为PyUserInput库,另一个为pyautogui库.就本人而言,我更喜欢使用pyautogui库,该库功能多,使用便利.下面给大家介绍一下pyautogui库的使用方法.在cmd命令框中输入pip3 install pyautogui即可安装该库! 常用操作 我们在pyautogui库中常常使用的方法,如下: import pyautogui pyautogui.PAUSE = 1 # 调用在执行动作后暂停的秒数,只能在执行一些pyaut

  • 详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: namedtuple类位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护. namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,还能够方便的通过属性名来访问数据. 接下来通过本文给大家分享python nam

  • 详解python中groupby函数通俗易懂

    一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式--函数名称) 举例如下: print(df["评分"].groupby([df["地区"],df["类

随机推荐