Python学习-列表1

十二、列表1

1、创建列表及基本运算

1)使用中括号,将所有准备放入列表中的元素,包裹起来,不同元素之间使用逗号分隔。
举例:

[1,2,3,4,5]

2)列表可以容纳不同类型的数据。
举例:

[1,2,3,4,5,"上山打老虎"]

3)给列表添加变量名。
举例:

rhyme = [1,2,3,4,5,"上山打老虎"]
print(rhyme)

 
[1,2,3,4,5,'上山打老虎']

4)序列在Python中是最常见的数据结构,字符串和列表都是序列,按顺序访问列表上的每一个元素。

rhyme = [1,2,3,4,5,"上山打老虎"]
for each in rhyme:
    print(each)
 
    
1
2
3
4
5
上山打老虎

5)单独访问列表中的某一个元素,可以使用下标索引的方法。

rhyme = [1,2,3,4,5,"上山打老虎"]
rhyme[0]
1
rhyme[2]
3
rhyme[5]
'上山打老虎'

6)如果列表很长,如何访问最后一个元素。

length = len (rhyme)
rhyme[length -1]
'上山打老虎'
 
rhyme[-1]
'上山打老虎'

2、列表切片

1)输入需要获取的元素的范围。

rhyme[0:3]
[1, 2, 3]

2)简写元素范围

rhyme[:3]
[1, 2, 3]
rhyme[3:]
[4, 5, '上山打老虎']
rhyme[:]
[1, 2, 3, 4, 5, '上山打老虎']

3)跳着显示元素,第二个冒号后是设置列表步进的跨度值。

rhyme[0:6:2]
[1, 3, 5]
 
rhyme[::2]
[1, 3, 5]

4)倒序输出

rhyme[::-2]
['上山打老虎', 4, 2]
 
rhyme[::-1]
['上山打老虎', 5, 4, 3, 2, 1]

3、列表——增

1)append(),在列表的末尾添加一个指定的元素。

heros = ["钢铁侠","绿巨人"]
heros.append("黑寡妇")
heros
['钢铁侠', '绿巨人', '黑寡妇']

2)extend(),允许直接添加一个可迭代的对象。比如列表就是一个可迭代的对象。
注意:extend()方法的参数必须是一个可迭代的对象,新的内容是追加到原列表最后一个元素的后面。

heros = ["钢铁侠","绿巨人"]
heros.extend(["鹰眼","灭霸","雷神"])
heros
['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']

3)使用切片实现增加功能

s = [1,2,3,4,5]
s[len(s):]=[6]
s
[1, 2, 3, 4, 5, 6]
 
s[len(s):]=[7,8,9]
s
[1, 2, 3, 4, 5, 6, 7, 8, 9]

4)在列表的任意位置添加数据——insert(),第一个参数是插入的位置,第二个参数是插入的元素。

s=[1,3,4,5]
s.insert(1,2)
s
[1, 2, 3, 4, 5]

列表开头插入

s.insert(0,0)
s
[0, 1, 2, 3, 4, 5]

列表末尾插入

s.insert(len(s),6)
s
[0, 1, 2, 3, 4, 5, 6]

4、列表——删

1)将指定的元素删除,remove方法
注意:如果列表中存在多个匹配的元素,name它只会删除第一个。
如果指定的元素不存在,那么程序就会报错。

heros.remove("灭霸")
heros
['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '雷神']

2)删除某个位置上的元素,pop方法,它的参数就是元素的下标索引值

heros.pop(2)
'黑寡妇'
heros
['钢铁侠', '绿巨人', '鹰眼', '雷神']

3)清空列表,clear

heros.clear()
heros
[]

5、列表——改

列表和字符串最大的区别就是,列表是可变的,而字符串是不可变的。
替换列表中的元素和访问列表类似,都是使用下标索引的方法。用赋值运算符就可以将新的值给替换进去了。
1)单个元素的替换

heros = ["蜘蛛侠","绿巨人","黑寡妇","鹰眼","灭霸","雷神"]
heros[4]="钢铁侠"
heros
['蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼', '钢铁侠', '雷神']

2)多个元素的替换——切片
A.将赋值号(=)左边指定的内容删除
B.将包含在赋值号(=)右边的可迭代对象中的片段插入左边被删除的位置

heros[3:]=["武松","林冲","李逵"]
heros
['蜘蛛侠', '绿巨人', '黑寡妇', '武松', '林冲', '李逵']

3)如果列表中都是数字,对列表中的元素从小到大排序,sort()方法
s.sort(key=None,reverse=False),对列表中的元素进行原地排序(key参数用于指定一个用于比较的函数;reverse参数用于指定排序结果是否反转)

nums = [3,1,9,6,8,3,5,3]
nums.sort()
nums
[1, 3, 3, 3, 5, 6, 8, 9]

4)从大到小排序,revers(),原地反转列表中的元素

nums.reverse()
nums
[9, 8, 6, 5, 3, 3, 3, 1]


 
nums = [3,1,9,6,8,3,5,3]
nums.sort(reverse=True)
nums
[9, 8, 6, 5, 3, 3, 3, 1]

6、列表——查

1)查看列表中有多少个某元素,count方法

nums.count(3)
3

2)查找某个元素的索引值,index()

Index(x,start,end),可以指定查找的开始和结束位置。
heros.index("绿巨人")
1

3)可以与替换结合使用,如果不知道某个元素的索引值,想替换该元素时。

heros[heros.index("绿巨人")]="神奇女侠"
heros
['蜘蛛侠', '神奇女侠', '黑寡妇', '武松', '林冲', '李逵']

4)浅拷贝1:拷贝列表,copy()

nums = [3,1,9,6,8,3,5,3]
nums_copy1 = nums.copy()
nums_copy1
[3, 1, 9, 6, 8, 3, 5, 3]

5)浅拷贝2:使用切片来实现拷贝

nums_copy2 = nums[:]
nums_copy2
[3, 1, 9, 6, 8, 3, 5, 3]

7、列表的运算

1)列表加法——拼接

s = [1,2,3]
t = [4,5,6]
s+t
[1, 2, 3, 4, 5, 6]

2)列表乘法——重复列表内部的所有元素若干次

s * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

8、嵌套列表——二维列表

二维列表的直接应用就是举证。

matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
 
matrix = [[1,2,3],
               [4,5,6],
               [7,8,9]]
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

9、访问嵌套列表

1)访问嵌套列表中的元素,可以使用循环来实现,迭代一个列表使用一层循环,迭代嵌套列表我们相应的使用嵌套循环。

for i in matrix:
    for each in i:
        print(each)
        
1
2
3
4
5
6
7
8
9
 
for i in matrix:
    for each in i:
        print(each,end="  ")
    print()
    
1  2  3  
4  5  6  
7  8  9  

2)通过下标访问嵌套列表

matrix[0]
[1, 2, 3]
matrix[0][0]
1

3)通过循环语句来创建并初始化二维列表

A = [0] * 3
A
[0, 0, 0]
for i in range(3):
    A[i] = [0] * 3
    
A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

需要注意有个错误写法

B = [[0] * 3] * 3
B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

因为当我们要修改其中某个元素的时候,则会发现不同

A [1][1] = 1
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
B [1][1] = 1
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]

3)同一性运算符——is
is用于检验两个变量是否指向同一个对象的一个运算符,Python对于不同对象的存储机制是不一样的,字符串是不可变的,但列表是可变的,Python无法确定用户会何时向列表中添加或删除元素。

x = "Love"
y = "Love"
x is y
True
 
x=[1,2,3]
y=[1,2,3]
x is y
False

刚才的错误写法的校验和追根溯源

A[0] is A[1]
False
B[0] is B[1]
True

AB在Python中的内存布局如下:
B试图通过乘号对一个嵌套列表进行拷贝,但它拷贝的只是对同一个列表的引用。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/399414.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SmartForms笔记

目录 表Table表体区域脚标效果展示 带自增编号的结构新建循环设置变量的位置运行结果 表Table 右击“创建”—“表”: 绘制布局如下所示: 选择第一行,选择成“%LTYPE1”: 选择第二行,选择成“%LTYPE2”&#xff0c…

适用于高云FPGA的JTAG

目标板卡:小梅哥芯海无涯GOWIN高云ACG525(GW5A-LV25UG324) 1.软件要求:必须用商业版,因为教育版(V1.9.9Beta-4 Education)不支持此封装的GW5A。商业版需要上网申请License,此处提供D4D853392AD8.lic文件(此方法为临时…

《MySQL MVCC 》

什么是 MySQL InnoDB 的 MVCC? MVCC (Multi-Version Concurrency Control)是一种基于多版本的并发控制协议,只有在 InnoDB 引擎下存在。MVCC 是为了实现事务的隔离性,即通过版本号,避免同一数据在不同事务间的竞争,可…

Job 和 DaemonSet

一、Job 1、Job 背景问题 K8s 里,最小的调度单元是 Pod,如果直接通过 Pod 来运行任务进程,会产生以下几种问题: ① 如何保证 Pod 内进程正确的结束? ② 如何保证进程运行失败后重试? ③ 如何管理多个任…

python在flask中的请求数据“无限流”

文章目录 一、问题描述二、解决方案 一、问题描述 在flask请求中,有个需求是让调用方一直调接口,并立马返回,而接口方缓存请求,依次执行。 二、解决方案 from flask import Flask, request, jsonify from queue import Queue i…

vue实现列表自动无缝滚动列表

大家好,今天给大家分享的知识是vue基于vue-seamless-scroll实现自动无缝滚动列表 一、实现自动滚动 最近在开发过程中遇到一个问题,就是需要实现自动滚动列表,效果图如下 就是这样一个列表在自动循环展示。在这里我是运用的 vue-seamless-sc…

数据结构——链表OJ题

目录 1.给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 2.给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点…

C#开发AGV地图编辑软件

C#自己开发AGV地图编辑软件: 1、自由添加和删除站点、停车位、小车、运行路径。 2、编辑得地图以XML文件保存。 3、导入编辑好地图的XML文件。 4、程序都是源码,可以直接在此基础上进行二次开发。 下载链接:https://download.csdn.net/d…

[极客挑战2019]HTTP

这道题考察的是http请求头字段的含义和使用; 具体如下 Referer:来源地址 User-Agent:客户端配置信息:浏览器类型、版本、系统类型等 X-Forwarded-For:代理地址,即数据发出的地址 开始解题:(对我这初学者真的烧脑&a…

解决数学计算公式在前端项目里的展示,涉及换肤适配各个框架

有时候我们项目里面会嵌套一些数学公式说明 例如 可能你会发现市面上有很多的第三方库可以实现,比如: MathJax: https://www.mathjax.org/ 但是我们项目里面用到公式可能就一个页面,引一个第三方库进来会显得十分臃肿&#xff0…

【python】linux系统python报错“ssl module in Python is not available”

一、问题现象 1.1 执行pip命令报错 pip安装时遇到openssl问题,没办法安装第三方库 “WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. ” 1.2 导入import ssl 报错 直接执行python&…

【Flink网络通讯(一)】Flink RPC框架的整体设计

文章目录 1. Akka基本概念与Actor模型2. Akka相关demo2.1. 创建Akka系统2.2. 根据path获取Actor并与之通讯 3. Flink RPC框架与Akka的关系4.运行时RPC整体架构设计5. RpcEndpoint的设计与实现 我们从整体的角度看一下Flink RPC通信框架的设计与实现,了解其底层Akka通…

IDEA 2023.2 配置 JavaWeb 工程

目录 1 不使用 Maven 创建 JavaWeb 工程 1.1 新建一个工程 1.2 配置 Tomcat 1.3 配置模块 Web 2 使用 Maven 配置 JavaWeb 工程 2.1 新建一个 Maven 工程 2.2 配置 Tomcat 💥提示:IDEA 只有专业版才能配置 JavaWeb 工程,若是社区版&am…

VIO第3讲:基于优化的IMU与视觉信息融合之最小二乘详解

第3讲:基于优化的IMU与视觉信息融合之最小二乘详解 文章目录 第3讲:基于优化的IMU与视觉信息融合之最小二乘详解1 最小二乘问题求解1.1 基础概念1.2 总结1.1 基础:最速下降法,牛顿法, 阻尼法1.1.1 迭代法1.1.2 最速下降法&#xf…

OAuth2.0 最简向导

本文是一篇关于OAuth2.0的启蒙教程,图文并茂,通俗易懂,力求用最简洁明了的方式向初学者解释OAuth2.0是什么。本文并不是冗杂难懂的长篇大论,一图胜千言,深入浅出OAuth2.0,知其然知其所以然。 参考文献 首…

DDI中的自适应子结构

SA-DDI提出了一种子结构感知图神经网络,一种配备了子结构注意力机制和用于DDI预测的子结构-子结构交互模块(SSIM)的消息传递神经网络。具体而言,基于分子中官能团的尺寸和形状通常是不规则的化学直觉,子结构注意力被设…

大模型时代下做科研的四个思路【论文精读·52】

大家好,上个礼拜FacebookMetaAI刚刚开源了他们自己的一个语言的大模型,叫做LLAMA,这个LLAMA的模型有65billing的参数,效果自然是不错的。他们的目的也是想让这个大模型更加的亲民,能够让更多人拿到这个模型的参数&…

ClickHouse快速上手

简介 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS) 官网(https://clickhouse.com/docs/zh)给出的定义,其实没看懂 特性 ClickHouse支持一种基于SQL的声明式查询语言,它在许多情况下与ANSI SQL标准相同。使用时和MySQL有点相似&#…

加固平板电脑在无人机的应用|亿道三防onerugged

无人机技术的快速发展已经在许多领域展现出巨大潜力,而加固平板电脑的应用在无人机领域中扮演着重要角色。 首先,加固平板电脑在无人机探测设备中发挥着关键作用。无人机探测设备通常需要实时传输高清图像和数据,以支持各种监测、勘测和检测…

JAVA高并发——无锁与死锁

文章目录 1、与众不同的并发策略:比较交换2、无锁的线程安全整数:AtomicInteger3、Java中的指针:Unsafe类4、无锁的对象引用:AtomicReference5、带有时间戳的对象引用:AtomicStampedReference6、数组也能无锁&#xff…