当前位置: 首页 > news >正文

Chapter 03 复合数据类型-1

1.列表

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

列表的定义:

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

列表对象的创建:

(1)直接赋值=

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

(2)list()函数

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()方法属原地操作,不改变列表在内存的起始地址

列表的主要操作:

元素的、删、改、查

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

运算符“+” ,不建议!

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

列表对象的append()方法

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

列表对象的extend()方法

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

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

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

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]

乘法*扩展列表对象。

*复制列表元素,生成一个新列表
>>> 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命令

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

列表对象的pop()方法

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

列表对象的remove()方法

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

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

获取列表元素:

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

切片方式:

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

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

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

切片详解                        

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

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

>>> 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”

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

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

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

>>> 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)

​​​​​​​

相关文章:

Chapter 03 复合数据类型-1

1.列表 Python内置的一种有序、可变的序列数据类型; 列表的定义: [ ]括起来的逗号分隔的多个元素组成的序列 列表对象的创建: (1)直接赋值 >>> list1 []#创建一个空列表赋值给list1 >>> list…...

【Python知识】Python面向对象编程知识

Python面向对象编程知识 概述1. 类(Class)2. 对象(Object)3. 封装(Encapsulation)4. 继承(Inheritance)5. 多态(Polymorphism)6. 抽象(Abstractio…...

CSharp: Oracle Stored Procedure query table

存储过程查询postgreSQL,Oracle 和sql server,Mysql 有区别。程序调用也是有区别。 oracle sql script: CREATE OR REPLACE PROCEDURE procSelectSchool(paramSchoolId IN char,p_cursor OUT SYS_REFCURSOR ) AS BEGINOPEN p_cursor FORSELECT *FROM SchoolWHERE SchoolId p…...

“协同过滤技术实战”:网上书城系统的设计与实现

2.1 JSP技术介绍 Java Server Pages这三个英文词汇的首字母的组合就是JSP。所以JSP是一个简写的名字,代表动态网页开发技术。JSP与Java的关系可以使用公式表示,即:JSP HTMLJava,HTML就是编写静态内容的标记语言。JSP则是可以编写网…...

Dhatim FastExcel 读写 Excel 文件

Dhatim FastExcel 读写 Excel 文件 一、说明1、主要特点2、应用场景 二、使用方法1、引入依赖2、Sheet 数据3、读取 Excel4、写入 Excel 一、说明 Github 地址:Dhatim FastExcel Dhatim FastExcel是一个高性能、轻量级的Java库,专门用于读取和写入Exce…...

YOLO11全解析:从原理到实战,全流程体验下一代目标检测

前言 一、模型介绍 二、网络结构 1.主干网络(Backbone) 2.颈部网络(Neck) 3.头部网络(Head) 三、算法改进 1.增强的特征提取 2.优化的效率和速度 3.更高的准确性与更少的参数 4.环境适应性强 5.…...

深度学习领域的主要神经网络架构综述

阅读本文前请先按照顺序阅读: Coursera吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述_吴恩达深度学习课程-CSDN博客 https://blog.csdn.net/red_stone1/article/details/77799014 完结篇 | 吴恩达deeplearning.ai专项课程精炼笔…...

【Nginx系列】---Nginx配置tcp转发

参考 Nginx 配置文件: error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }stream {# 第一个服务转发upstream mysqltest {server 172.16.187.142:9000;}server {listen 9000;proxy_pass mysqltest;}…...

Java抽象工厂+单例模式

在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…...

后端接口设计

一、基本规范 1.URL设计 应遵循RESTful风格,使用动词名词的方式描述接口的功能。应简洁明了,易于理解和记忆。 2.请求协议及方法 使用HTTPS协议进行数据传输,保证数据在传输过程中的安全性。如无特殊情况,统一使用post方法。 …...

Docker部署Sentinel

一、简介 是什么:面向分布式、多语言异构化服务架构的流量治理组件 能干嘛:从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址:https://sentinelguard.io/zh-c…...

真实环境下实车运行,新能源汽车锂离子电池数据集

引言 锂离子电池(Lithium-ion Batteries,LiBs)已经作为电动汽车核心动力源,其性能直接关系到系统的性能和使用安全。为确保锂电池的安全使用,需要对锂电池的状态进行精确的估计,包括荷电状态(State of Charge, soC)、健康状态(St…...

【求职面试】驾照的种类

大型客车 A1 大型载客汽车 A3、B1、B2、C1、C2、C3、C4、M 牵引车 A2 重型、中型全挂、半挂汽车列车 B1、B2、C1、C2、C3、C4、M 城市公交车 A3 核载10人以上的城市公共汽车 C1、C2、C3、C4 中型客车 B1 中型载客汽车(10人以上、19人以下) C1、C2、C3…...

centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!

在 CentOS 系统中,权限管理是操作系统的核心功能之一,确保不同用户和进程对文件、目录以及设备的访问被合理控制。 权限系统主要包括传统的 Unix 权限模型、特殊权限(SetUID、SetGID、Sticky 位)和更精细的访问控制列表&#xff…...

AI Agent案例全解析:百度营销智能体(8/30)

引言:在当今这个科技飞速发展的时代,AI技术呈现出爆发式的增长,正以前所未有的态势改变着众多行业的发展轨迹,营销领域也不例外。随着市场竞争的日益激烈,传统营销模式逐渐显露出疲态,对于变革的需求愈发迫…...

hive常用函数有哪些

Hive是一个基于Hadoop的数据仓库工具,它提供了类似于SQL的接口,用于数据查询和分析。Hive提供了许多内置函数,这些函数可以分为几种类型,包括: • 字符串函数:用于处理字符串数据。 • concat()&#xff1…...

【Python高级353】python实现多线程版本的TCP服务器

前面学了了套接字编程、tcp服务端客户端开发、面向对象版的服务端客户端、带有端口复用的服务端。 这里使用多线程开发多任务版的服务端 多任务版本的TCP服务器 来一个客户,就为其创建一个线程 import socket import threadingclass WebServer:# 3、定义一个__ini…...

分布式调度框架学习笔记

一、分布式调度框架的基本设计 二、线程池线程数量设置的基本逻辑 cpu是分时复用的方法,线程是cpu调度的最小单元 如果当前cpu核数是n,计算密集型线程数一般设为n,io密集型(包括磁盘io和网络io)线程数一般设置为2n. 计算密集型线程数一般设…...

SpringCloudAlibaba技术栈-Nacos

1、什么是Nacos? Nacos是个服务中心,就是你项目每个功能模块都会有个名字,比如支付模块,我们先给这个模块起个名字就叫paymentService,然后将这个名字和这个模块的配置放到Nacos中,其他模块也是这样的。好处是这样能更好地管理项…...

Redis篇--常见问题篇4--大Key(Big Key,什么是大Key,影响及使用建议)

1、概述 大Key:通常是指值(Value)的长度非常大,实际上键(Key)长度很大也算。通常来说,键本身不会很长,占用的内存较少,因此判断一个键是否为bigKey主要看它对应的值的大…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...