Chapter 03 复合数据类型-1

devtools/2024/12/26 21:22:21/

1.列表

Python内置的一种有序、可变的序列数据类型;

列表的定义:

[ ]括起来的逗号分隔的多个元素组成的序列

列表对象的创建:

(1)直接赋值=

python">>>> list1 = []#创建一个空列表赋值给list1
>>> list2 = [1,2,3,4,5]#创建一个元素为整数的列表对象list2
>>> list3 = [‘Python’,[6,6,6],5.13]#创建元素为字符串、列表的对象list3;
>>> list4 = [['乔峰','M',35],['东方不败','F',36]] #元素的数据类型可以各不相同

(2)list()函数

python">list()函数可将可迭代对象的数据转换为列表,如字符串、元组、range对象等
>>> x = list() # 创建一个空列表[ ]
>>> y = list((1,2,3,4,5)) # y的值为 [1, 2, 3, 4, 5]
>>> z = list(range(5)) # z的值为 [0, 1, 2, 3, 4]
>>> s = list(‘Python’) # s的结果为['P', 'y', 't', 'h', 'o', 'n']

Tips:append()和extend()方法属原地操作,不改变列表在内存的起始地址

列表的主要操作:

元素的、删、改、查

增加列表元素:列表元素增加或删除时,列表对象自动进行扩展或收缩内存。

运算符“+” ,不建议!

python">>>> l1 = [1,2,3]
>>> l1 = l1+[10] #创建新列表,非在l1后增加元素
>>> l1 #还记得基于值的内存管理方式吗?
[1, 2, 3, 10]

列表对象的append()方法

python">append()方法在列表尾部增加元素,类型任意
>>> x = [ ] #append()方法只能有一个参数
>>> x.append(‘乔峰’) # 增加字符串元素
>>> x.append([1999,7,7]) # ['乔峰', [1999, 7, 7]]

列表对象的extend()方法

python">extend()方法将另一个迭代对象的所有元
素添加至该列表对象尾部
>>> x.extend(['M',35])
>>> x
['乔峰', [1999, 7, 7], 'M', 35]

增加列表元素:列表元素增加或删除时,列表对象自动进行扩展或收缩内存。

列表对象的insert()方法:涉及插入位置之后所有元素的移动,影响速度;

python">insert()方法将元素添加至列表的指定位置
>>> l1 = [1,2,4,5]
>>> l1.insert(2,3)# 在下标为2的位置插入元素3
>>> x
[1,2,3,4,5]
>>> x.insert(2,[2.5,2.6])
>>> x
[1, 2, [2.5,2.6], 3, 4, 5]

乘法*扩展列表对象。

python">*复制列表元素,生成一个新列表
>>> x = [1,2,3]*3
>>> x
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> y = [1,[2,3]]*2
>>> y
[1, [2, 3], 1, [2, 3]]

列表的主要操作:元素的增、、改、查

删除列表元素:

del命令

python">del命令可以删除列表元素,也可删除整个列表对象
>>> x = ['乔峰', [1999, 7, 7], 'M', 35]
>>> del x[1] #删除下标索引为1的元素:[1999, 7, 7]
>>> del x #删除整个列表

列表对象的pop()方法

python">pop()方法删除并返回指定(默认为最后一个)位置
上的元素,若位置索引超出范围则抛出异常。
>>> x = ['乔峰', [1999, 7, 7], 'M', 35]
>>> age = x.pop() # ['乔峰', [1999, 7, 7], 'M']
>>> birth = x.pop(1) # ['乔峰', 'M']

列表对象的remove()方法

python">remove()方法删除首次出现的指定元素,若
列表中不存在指定元素,则抛出异常。
>>> birth.remove(7)
>>> birth
[1999, 7]

列表的主要操作:元素的增、删、改、

获取列表元素:

下标索引的方式访问单个元素;

切片方式:

Object [ start : end : step ]                                        IndexError: list index out of range

python">>>> x = ['乔峰', [1999, 7, 7], 'M', 35]
>>> name = x[0] # name值为:'乔峰' >>>> x[-1] = 40
>>> x
['乔峰', [1999, 7, 7], 'M', 40]

列表、元组和字符串均支持双向索引

切片详解                        

 适用于可用于列表、元组、字符串、range对象等

Object [ start : end : step ],切片操作不会因为下标越界而抛出异常,代码更健壮

python">>>> aList = [1, 2 3, 4, 5, 6, 7, 8, 9, 10]
>>> aList[ : : ] #返回包含所有元素的新列表
>>> aList[::-1] #逆序的所有元素
>>> aList[::2] #偶数位置,隔一个取一个
>>> aList[1::2] #奇数位置,隔一个取一个
>>> aList[3::] #从下标3开始的所有元素
>>> aList[3:6] #下标在[3, 6)之间的所有元素
>>> aList[0:100] #前100个元素,下标越界,自动截断
>>> aList[100:] #下标100之后的所有元素,越界,自动截断,返回空列表[ ]

列表的主要操作:元素的增、删、改、

列表相关查询:

(1)index()方法获取指定元素首次出现的下标

(2)count()方法统计指定元素在列表对象中出现的次数

(3)“in”关键字来判断一个值是否存在于列表中,返回结果为“True”或“False”

python">>>> x= ['zhang','xu','乔峰']
>>> x.index('乔峰’)
2

列表的主要操作:元素的增、删、、查

基于下标索引和切片,可直接使用赋值语句修改列表元素值

python">>>> x = ['乔峰', [1999, 7, 7], 'M', 35, 1.83]
>>> x[-2] = 40 #修改年龄为40,结果为['乔峰', [1999, 7, 7], 'M', 40, 1.83]
>>> x[:2] = [‘东方’,[1966,6,6]] #替换前两个元素,结果为['东方', [1980, 6, 6], 'M', 40, 1.83]
>>> x[:2:-1] = [1.75,54] #逆序替换后两个元素!结果为['东方', [1980, 6, 6], 'M', 54, 1.75]
>>> x[1:3] = [ ] #删除下标1到3的3个元素,结果为[‘东方', 54,1.75]
>>> del x[::2] #删除下标位置为偶数的元素,结果为[54]

与列表统计或操作相关的其他内置函数和列表方法

编写.py代码,实现以下功能:

1.石头、剪刀、布人机大战游戏

人类通过输入1,2,3分别代表出石头、剪刀和布;

计算机随机出石头、剪刀和布手势;

判断谁赢了并给出结果。

Tips:

可将石头、剪刀、布放在一个列表中;

可将所有人胜的情况列举出并放在一个列表中,即当人出石头、剪刀、布而计算机出剪刀、

布和石头时,人赢;不在上述三种情况的,机器赢。

使用random库进行随机操作。

编写.py代码,实现以下功能:

模拟用户登录系统和相关操作:

1. 建立用户名列表user,用户包括:admin, root, guest

2. 建立用户的密码列表pwd,对应密码为:admin, 123, 456

3. 输入一个用户名,如果存在该用户,则继续输入密码;如果不存在该用

户,则显示:该用户不存在。密码正确,显示‘登录成功’;密码不正确,提

示密码错误;[登录成功后,可修改密码]。

4. root用户登录成功后,可以对用户增、删。

列表推导式(解析式)         list comprehension

优雅神奇的列表生成方式,适用于字典、集合等可迭代结构

将for循环压缩成一行代码,生成列表、字典或集合等可迭代数据结构(iterables)

​​​​​​​


http://www.ppmy.cn/devtools/145628.html

相关文章

架构师之路--达梦数据库执行计划与索引优化

达梦数据库执行计划与索引优化:解锁高效数据查询的密码 在数据库的世界里,数据量呈爆炸式增长,如何快速、精准地从海量数据中获取所需信息成为了关键挑战。达梦数据库作为一款功能强大的国产数据库,为我们提供了诸多工具和技术来…

IntelliJ IDEA Docker集成

一、概述 Docker是一种用于在隔离和可复制环境中部署和运行可执行文件的工具。这可能很有用,例如,在与生产相同的环境中测试代码。 IntelliJ IDEA集成了Docker功能,并为创建Docker映像、运行Docker容器、管理Docker Compose应用程序、使用公…

理解并使用 Linux 内核的字符设备

理解并使用 Linux 内核的字符设备 1. 引言 1.1 什么是字符设备 字符设备是 Linux 中的一类设备,支持以字符为单位进行数据传输。与块设备不同,字符设备不需要缓冲区,即数据是逐字节直接传递的。典型的字符设备包括串口、键盘、鼠标、伪终端…

微信小程序页面之间的传值方式

在微信小程序的开发过程中,页面之间的传值是一个常见的操作。根据多年的实践,我就我所知道的小程序页面之间的传值方式,进行简单的总结。希望能够帮助大家。 一、URL参数传递 原理 这种方式类似于网页开发中的URL传参。在微信小程序中&…

面试题整理15----K8s常见的网络插件有哪些

面试题整理15----K8s常见的网络插件有哪些 常见的K8s网络插件有Flannel,Calico,Cilium,Weave,Antrea,Kube-OVN等.其中Calico, Flannel, 和 Cilium较为常用. Flannel: 实现方式: 基于 VXLAN 或 UDP 隧道在节点之间创建网络覆盖。相对简单易于理解和部署。功能: 提供基本的网络连…

基于深度学习(HyperLPR3框架)的中文车牌识别系统-前言

参考链接: GitHub - szad670401/HyperLPR: 基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework. - szad670401/HyperL…

Pyside6 在 pycharm 中的配置

打开文件->设置 找到 工具->外部工具 点击 号 创建一个外部工具 QtDesigner 名称:QtDesigner 程序:D:\miniconda\envs\ergoAI-qt\Lib\site-packages\PySide6\designer.exe 实参:$FileName$ 工作目录:$FileDir$ PyUIC 名称&#xf…

taiwindcss

1.安装 npm install -D tailwindcss postcss autoprefixer npx tailwindcss init 这会创建一个 tailwind.config.js 文件。注意:一定通过px tailwindcss init方式创建 2.tailwind.config.js module.exports {content: [./index.html,./src/**/*.{js,ts,jsx,ts…