Pyhon基础数据结构(列表)【蓝桥杯】
a = [1,2,3,4,5] a.reverse() print("a = ",a) a.reverse() print("a = ",a)# 列表
列表(list)有由一系列按照特定顺序排序的元素组成

列表是有顺序的,访问任何元素需要通过“下标访问”
所谓“下标”就是指元素在列表从左往右为第几个,下标从0开始。
下标只能为【-n,n-1】,分为【0,n-1】(顺数第几个)、【-n,-1】(倒数第几个)
a = [‘apple’,‘banana’,‘cat’,‘dog’]
列表–访问列表
列表的每一个元素均可以像其他变量一样进行使用
赋值、加减乘除各种运算、打印等
a = [123,456,789]
print(a[0]+a[1])
print(a[2]//a[0])a[0] = 1
print("a = ",a)
a[1] = 5
print("a = ",a)
列表–添加元素
在末尾添加单个元素:
append(x) :列表a末尾添加元素x。
a = []
a.append(123)
a.append("Hello")
a.append(3.14)
print("a = ",a,a)a = [1,2,3,4,5]
a.append(6)
print("a = ",a)
a.expend(x):列表a末尾添加x;x为迭代对象,包括列表、元组、字符串等,不可为单个数字.
append是添加单个元素到末尾
expend是添加个多个元素到末尾
#append()
a = [0,1,2]
a.append([4,5,6])
print("a = ",a)
#extend()
a = [0,1,2]
a.extend([4,5,6])
print("a = ",a)
输出
a = [0, 1, 2, [4, 5, 6]]
a = [0, 1, 2, 4, 5, 6]
a.insert(idx,x):列表a在下标为idx插入元素x,原来下标大于等于idx的元素往右移动一个位置
a = ['apple','banana','cat','dog']
a.insert(0,'Apple')
a.insert(1,'Banana')
print("a = ",a)
输出
a = ['Apple', 'Banana', 'apple', 'banana', 'cat', 'dog']
列表–删除元素
del a[idx]:删除列表a中的下标为idx的元素
a = ['apple','banana','cat','dog']
del a[3]
print("a = ",a)
输出
a = ['apple', 'banana', 'cat']
pop(idx):删除列表a中为idx的元素,删除元素里的最后一个
#列表自带的删除
x = a.pop(1)
print("x = ",x)
print("a = ",a)
输出
x = banana
a = ['apple', 'cat', 'dog']
#利用pop删除元素
a = ['apple','banana','cat','dog']
del_str = a.pop(1)
print("a = ",a)
print("删除的元素为: ",del_str)#pop不加参数,默认删除最后一个元素
del_str = a.pop()
print("a = ",a)
输出
a = ['apple', 'cat', 'dog']
删除的元素为: banana
a = ['apple', 'cat']
a.remove(x):删除列表a中值为x的第一个元素
#remove利用删除元素
a = ['apple','banana','cat','dog']
del_str = 'apple'
a.remove(del_str)
print("a = ",a)
输出
a = ['banana', 'cat', 'dog']
如何判断列表a中存在x
a = ['apple','banana','cat','dog']
if 'apple' in a:print('不存在')
else:print('存在')
输出
不存在
a = ['apple','banana','cat','dog']
if 'apple' not in a:print('不存在')
else:print('存在')
输出
存在
如何删除列表所有的x
a = [1,2,3,3,3,3,4,5,5,1323,32,23,4]
x = 2
while x in a:a.remove(x)
print("a = ",a)
输出
a = [1, 3, 3, 3, 3, 4, 5, 5, 1323, 32, 23, 4]
列表–查找元素
查找元素x
如何隔统计apple删除
a = ['apple','banana','cat','apple']
x = 'apple'
c = a.count(x)
print("c = ",c)
for i in range(c):a.remove(x)
print("a = ",a)
输出
c = 2
a = ['banana', 'cat']
下标找元素
a = ['apple','banana','cat','dog','cat','apple']
print(a.count('apple'))
print(a.index('cat'))
print(a.index('cat',3))
输出
2
2
4
列表–翻转
a = [1,2,3,4,5]
a.reverse()
print("a = ",a)
a.reverse()
print("a = ",a)
输出
a = [5, 4, 3, 2, 1]
a = [1, 2, 3, 4, 5]
列表–求出列表长度
a = [1,2,3,4,5]
#输出长度为5
print(len(a))a.append(6)
a.append(7)
print(len(a))a.pop(4)
print(len(a))
print(a)
输出
5
7
6
[1, 2, 3, 4, 6, 7]
列表–小结

操作列表–遍历整个列表
利用for循环遍历列表
a = ['apple','banana','cat','apple']
x = 'apple'
c = a.count(x)
print("c = ",c)
for i in range(c):a.remove(x)
print("a = ",a)
输出
c = 2
a = ['banana', 'cat']
a = ['banana','apple','cat','dog','apple','banana']
ans = ''
for x in a:ans = ans +' '+ x
print(ans)
输出
banana apple cat dog apple banana
enumerate(a)
将列表a每个元素和对应的下标组合为一个带索引的序列,下标默认从0开始,遍历的时候同步遍历下标和值。
#enumerate(a) = [(0,'apple'),(1,'banana'),(2,'cat'),(3,'dog'),(4,'apple'),(5,'banana')] #隐藏起来了
a = ['apple','banana','cat','dog','apple','banana']
for idx,x in enumerate(a):print(idx,x)
输出
0 apple
1 banana
2 cat
3 dog
4 apple
5 banana
操作列表–创建数值列表
利用range函数+list

a = list(range(10))
print(a)b = list(range(0,10,3))
print(b)c = list(range(10,-1,-2))
print(c)
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 3, 6, 9]
[10, 8, 6, 4, 2, 0]
操作列表–列表操作符
+:连接两个列表
a*x:a = list,x是int,构成一个新列表,其内容为a复制x次
a = list(range(10))
print(a)b = list(range(0,10,3))
print(b)
c = a + b
print("c=",c)
d = a*3
c = list(range(10,-1,-2))
print(c)
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 3, 6, 9]
c= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 3, 6, 9]
[10, 8, 6, 4, 2, 0]
操作列表–内置函数
a = [1,2,3,4,5]
print("sum(a)=",sum(a))
print("max(a)=",max(a))
print("min(a)=",min(a))
输出
sum(a)= 15
max(a)= 5
min(a)= 1
***操作列表–列表解析式子
列表解析式:可以基于已有列表生成相关的新列表
[expression for menber in iterable]
对于迭代对象iterable的每个元素member,都执行expression构成新的列表
print(list(range(11)))
a = [x**2 for x in range(11)]
print(a)
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
二
a = [1,2,3,4]
b = [3,4,5,6]
#c = a*b
c = [a[i]*b[i]for i in range(4)]
print(c)
输出
[3, 8, 15, 24]
暴力
a = [1,2,3,4]
b = [3,4,5,6]
c = []
for i in range(4):c.append(a[i]*b[i])
print(c)
输出
[3, 8, 15, 24]
三
输出
a = [x**2 for x in range(11)]
print(a)a = [x**2 for x in range(11) if x%2==0]
print(a)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0, 4, 16, 36, 64, 100]
***操作列表–列表切片
切片:列表的部分元素组成的新列表
a[strat🔚step]
start:切片的下标起点(包含起点),默认为0
end:切片的下标终点(不包含终点),默认为列表长度
step:切片的步长,默认为1
range用法基本类似,只是range是数字序列,而切片面向的是任意list
a = ["apple","banana","cat","dog",'dog']
#切片[2,4],步长为1
b = a[2:4]#切片[0,n],步长为2
c = a[::2]
#前三个元素
d = a[:3]
#后三个元素
e = a[-3:]print('b = ',b)
print('c = ',c)
print('d = ',d)
print('e = ',e)
输出
b = ['cat', 'dog']
c = ['apple', 'cat', 'dog']
d = ['apple', 'banana', 'cat']
e = ['cat', 'dog', 'dog']
操作列表–小结

元组
元组:与列表类似,是有一系列按照额定顺讯排序的元素组成
用()创建,或者用tuple创建
与List区别
List是可修改的序列,而元组的不可修改的,即创建无法修改当前元组
a = ('apple','banana','cat','dog')
print(type(a),a)
b = ['dog','egg']
c = tuple(b)
print(type(c),c)
输出
<class 'tuple'> ('apple', 'banana', 'cat', 'dog')
<class 'tuple'> ('dog', 'egg')

习题


import os
import sys# 请在此输入您的代码
lis = [int(input()) for i in range(int(input()))]
jiege = 0
youxiu = 0
for i in lis:if i >= 60:jiege +=1if i >=85:youxiu +=1else:continue
print("{}%".format(round(jiege/len(lis)*100)))
print("{}%".format(round(youxiu/len(lis)*100)))
习题二


import os
import sys# 请在此输入您的代码
n = int(input())
m = []
for i in range(n):m.append(int(input()))
print(max(m))
print(min(m))
print("{:.2f}".format(sum(m)/n))
相关文章:
Pyhon基础数据结构(列表)【蓝桥杯】
a [1,2,3,4,5] a.reverse() print("a ",a) a.reverse() print("a ",a)# 列表 列表(list)有由一系列按照特定顺序排序的元素组成 列表是有顺序的,访问任何元素需要通过“下标访问” 所谓“下标”就是指元素在列表从左…...
Linux篇(权限管理命令)
目录 一、权限概述 1. 什么是权限 2. 为什么要设置权限 3. Linux中的权限类别 4. Linux中文件所有者 4.1. 所有者分类 4.2. 所有者的表示方法 属主权限 属组权限 其他权限 root用户(超级管理员) 二、普通权限管理 1. ls查看文件权限 2. 文件…...
深入理解 Spark 中的 Shuffle
Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…...
leetcode-8-字符串转整数
题解: 代码:...
SQL注入注入方式(大纲)
SQL注入注入方式(大纲) 常规注入 通常没有任何过滤,直接把参数存放到SQL语句中。 宽字节注入 GBK 编码 两个字节表示一个字符ASCII 编码 一个字节表示一个字符MYSQL默认字节集是GBK等宽字节字符集 原理: 设置MySQL时错误配置…...
OpenCV基础(1)
1.图像读写与窗口显示 1.1.imread读取图像文件 Mat cv::imread(const string &filename,int flags IMREAD_COLOR); filename:要读取的图像文件名flags:读取模式,可以从枚举cv::ImreadModes中取值,默认取值是IMREAD_COLOR&am…...
【freertos】FreeRTOS信号量的介绍及使用
FreeRTOS信号量 一、概述二、PV原语三、函数接口1.创建一个计数信号量2.删除一个信号量3.信号量释放4.在中断释放信号量5.获取一个信号量,可以是二值信号量、计数信号量、互斥量。6.在中断获取一个信号量,可以是二值信号量、计数信号量7.创建一个二值信号…...
React Native 全栈开发实战班 - 图片加载与优化
在移动应用中,图片加载与优化 是提升用户体验和减少资源消耗的重要环节。图片加载不当可能导致应用卡顿、内存泄漏甚至崩溃。本章节将介绍 React Native 中常用的图片加载方法,包括 Image 组件的使用、第三方图片加载库(如 react-native-fast…...
Golang云原生项目:—实现ping操作
熟悉报文结构 ICMP校验和算法: 报文内容,相邻两个字节拼接到一起组成一个16bit数,将这些数累加求和若长度为奇数,则将剩余一个字节,也累加求和得出总和之后,将和值的高16位与低16位不断求和,直…...
mysql如何查看当前事务的事务id
-- 开启一个事务,但不执行写操作 START TRANSACTION; -- 查询 InnoDB 事务信息 SELECT * FROM information_schema.innodb_trx;在 MySQL 的 MVCC (多版本并发控制) 中,事务 ID (Transaction ID) 是由 InnoDB 存储引擎分配的,它的分配机制与事…...
在linux里如何利用vim对比两个文档不同的行数
在Linux中,可以使用vimdiff命令来对比两个文档中不同的行。首先确保你的系统中安装了vim编辑器。 打开终端,使用以下命令来启动vimdiff: vimdiff file1 file2 这里file1和file2是你想要对比的两个文件的路径。 vimdiff会以并排方式打开两…...
深入解析Python中的逻辑回归:从入门到精通
引言 在数据科学领域,逻辑回归(Logistic Regression)是一个非常重要的算法,它不仅用于二分类问题,还可以通过一些技巧扩展到多分类问题。逻辑回归因其简单、高效且易于解释的特点,在金融、医疗、广告等多个…...
【数据库】mysql数据库迁移前应如何备份数据?
MySQL 数据库的备份是确保数据安全的重要措施之一。在进行数据库迁移之前,备份现有数据可以防止数据丢失或损坏。以下是一套详细的 MySQL 数据库备份步骤,适用于大多数情况。请注意,具体的命令和工具可能因 MySQL 版本的不同而有所差异。整个…...
C语言——鸡兔同笼问题
没注释的源代码 #include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int tou 10; i…...
数据结构王道P234第二题
#include<iostream> using namespace std; int visit[MAxsize]; int color[MaxSize];//1表示红,2表示白; bool dfs(Graph G, int i){visit[i]1;ArcNode *p;bool flag1;for(pG.vertices[i].firsrarc; p ; pp->next){int jp->adjvex;if(!visi…...
层归一化和批归一化
层归一化是针对某一样本的所有特征,批归一化是针对所有样本的某一特征。 计算公式:(当前值 - 均值)/ 标准差。 作用:缓解梯度消失和梯度爆炸的问题,并提高网络的泛化性能。 为什么Transform和BERT中使用层归…...
Spring Cloud Gateway 网关
微服务网关 Spring Cloud Gateway https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories Spring Cloud 在版本 2020.0.0 开始,去除了 Zuul 网关的使用,改用 Spring Cloud Gateway 作为网关…...
LabVIEW中的UDP与TCP比较
在LabVIEW中,UDP和TCP可以用于不同的网络通信场景,开发者可以根据需求选择合适的协议。以下是结合LabVIEW开发时的一些比较和应用场景: 1.TCP在LabVIEW中的应用: 可靠性高的场景:当开发一个对数据传输的准确性和完整…...
半导体器件与物理篇3 P-N结
热平衡时的PN结 pn结的定义:由p型半导体和n型半导体接触形成的结 pn结的特性和关键变量包括:整流性(即电流单向导通的特性)、平衡费米能级(费米能级 E F E_F EF为常数, d E F d x 0 )、内建电势 \frac…...
深入剖析String类的底层实现原理
嘿嘿,家人们,今天咱们来模拟实现string,好啦,废话不多讲,开干! 1:string.h 1.1:构造函数与拷贝构造函数 1.1.1:写法一 1.1.2:写法二(给缺省值) 1.2:赋值运算符重载与operatror[]获取元素 1.3:容量与迭代器 1.4:reserve与resize 1.5:清空与判断是否为空 1.6:push_back与…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
