一.列表(python基础编程)

1. List列表的作用
(1).存放数据,并且list存放数据是安全的,但是不能存放大数据的东西。例如:音频,视频,图片等。
(2).list可以遍历数据库的结果集,后续我们讲解mysql,oracle和python操作给大家讲解。------重点
(3).list的底层原理是一个bean容器。------重点

2.定义List列表 []
(1).my_list1= [] #空列表 思考? [] 其实就是一个内存空间,所以List可以在[]里面存放数据!
(2).my_list2=[10] #10表示的是给list列表开辟大小为10的空间内存!
(3).my_list3=[‘王老师’,‘李老师’,‘张老师’] # 给列表赋值 表示内存里面有3个字符串值
(4).扩展:String str=new String(‘abc’) 思考:产生几个对象? 2个 ------研究堆栈内存的原理
(5).列表里面可以存放任意类型的东西 ------重点 list其实也是面向对象的
ex: .my_list4=[‘hello’,12,12.0,True]

3.如何操作列表
备注:如果后面或者大家去企业拿到一个新技术,此技术只要是可以存放数据,那么这个技术的核心
就是CRUD,(增,删,查,改)。
(1):list列表通过下标index获取值
下标的工作原理:
i:下标是可以被改变的! 更改下标对list的内存空间没有任何影响。
ii:主键primary key id=1 →→删除,例如:银行卡,id可以删除,但是会影响数据的性能问
题,数据不好维护!

my_list5=[‘黄晓明’,‘易烊千玺’,‘wanghu’,‘123’]
print(my_list5[0])
print(my_list5[2])
#print(my_list5[7]) #超出范围,报异常:IndexError: list index out of range
print(my_list5[-1]) #-1表示按照倒序获取值

(2).列表list
1.len属性函数 len方法 有区别?
备注:如何区别属性和方法?
len(o) o表示的是list里面存放对象

print(‘my_list5的长度,’,len(my_list5))
#print(‘my_list5的长度,’,len(object))

(3).列表切片
<1.什么是切片? 例如:一个西瓜 可以切成很多“块”—其实“块”值得就是“数据块”
list的切片就是通过index将一个完整的字符串或者list进行划分不同的值!

stus = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘切片以后的值为:’,stus[1]) # 这个并不是切片
print(‘切片以后的值为:’,stus[1:1]) #内存空间,切片必须保证数据的完整性
print(‘切片以后的值为:’,stus[1:2])
print(‘切片以后的值为:’,stus[1:3])
print(‘切片以后的值为:’,stus[1:8]) #在数据切片操作过程当中如果切片的次数大于list里面的数据,程序不会报错,因为有无限大的内存。
print(‘切片以后的值为:’,stus[0:8])
print(‘切片以后的值为:’,stus[-1:8])

备注:在list切片的操作过程里面,[1:1]会将数据进行破坏,违背数据的:原子性、离子性

如果省略结束位置,则会一直截取到最后
如果省略起始位置,则会从第一个元素开始截取

print(‘省略切片结束以后的值为:’,stus[1:])
print(‘省略切片开始以后的值为:’,stus[:5])
print(‘省略切片开始以后的值为:’,stus[:8])

总结:list列表的核心特性:只包含开始索引位置,不包含结束的索引位置

如果起始位置和结束位置全部省略,则相当于创建了一个列表的副本
print(‘起始位置和结束位置全部省略:’,stus[:]) **此操作在工作里面尽量不要出现,Why?

备注:因为:表示的是一个内存,如果没有起始位置和结束位置的定义,这个内存默认就是无限大,
这样会导致大量内存空间闲置,最后会导致程序、数据的空闲例程。

        思考:什么是线程安全 和 线程不安全?----重点面试题目线程安全:指的是多个线程在操作过程当中,一个线程在执行的时候,另一个线程不能执行,采用了加锁机制,保证了数据的安全性,知道线程1结束释放cpu资源,线程2才可以执行。线程不安全:指的是多个线程在执行过程当中,大家都在抢夺cpu资源,最终导致服务器崩溃,数据泄露,线程发生死锁问题。什么是死锁? 死锁如何解决? ---课下查?------重点面试题(1).线程死锁:是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。(2).死锁如何解决:<1>不考虑此问题,乐观的角度,鸵鸟算法<2>不让死锁发生:①死锁预防。静态策略,通过设计合适的资源分配算法,不让死锁发生②死锁避免动态策略,以不让死锁发生为目标,跟踪并评估资源分配过程,根据评估结果决策是否分配<3>让死锁发生:死锁的检测与解除(3).死锁如何预防:(1)破坏“互斥使用/资源独占”条件使用资源转换技术,将独占资源变为共享资源(2)破坏“占有且等待”条件 ①方案1:每个进程在运行前必须一次性的申请它所要求的全部资源,且仅当该进程所要的资源均可满足时才一次性的分配。资源利用率低,“饥饿”现象②在允许进程动态申请资源的前提下规定,一个进行在申请新资源,且不能立即得到满足,必须释放已占有的全部资源。若需要再重新申请(3)破坏“不可抢占”条件可以通过操作系统抢占这一资源(根据进程的不同优先级)局限性:适用于状态易于保存和恢复的资源,如CPU(抢占式的调度算法),内存(页面置换算法)(4)破坏“循环等待”条件通过定义资源类型的线性顺序实现方案:资源有序分配法。(如哲学家就餐问题)也就是把资源中所有的资源编号,进程在申请资源时,必须严格按照资源编号的递增次序进行,否则操作系统不予分配。(资源使用的频繁性?)

4.列表list
里面传3个参数 例如:my_list=[1:2:3]
语法:列表[起始:结束:步长]
(1).步长表示,每次获取元素的间隔,默认值是1
步长不能是0,但是可以是负数

stus = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
#print(‘步长操作1:’,stus[::0]) # 异常:slice step cannot be zero
print(‘步长操作1:’,stus[1:2:1]) #步长为1
print(‘步长操作1:’,stus[1:3:2]) #步长为2
print(‘步长操作1:’,stus[1:4:1])
print(‘步长操作1:’,stus[1:4:-1]) #备注:步长的负数不建议使用。Why?

步长表示的是一个间隔,用于间隔数据,如果步长为负,对于数据来讲,进行数据的读写操作很慢,因为不确定数据的大小,即没有最大值和最小值! 数据不好维护,并且会产生数据的垃圾碎片 ------最终导致数据 的脏读----简称为脏数据–
例如:1 2 3 4 5 6 7 8 9 10
(2).列表的 + *
堆内存 存放值
栈内存 存放内存的地址

思考: list的拼接原理<1.数据其实是以左边的数据列表为主列表,右边的为子列表!<2.列表拼接之后就是一个完整的list,将值默认存放到堆内存里面!<3.列表遵守数据的先进后出,后进先出的原理!

my_list6=[‘赵雅芝’,‘成龙’,‘李连杰’,‘赵本山’]+[‘益达’]
print(‘list拼接之后的值:’,type(my_list6))
print(‘list拼接之后的值:’,my_list6)
my_list7=[‘赵雅芝’,‘成龙’,‘李连杰’,‘赵本山’]2
print('list
之后的结果:’,my_list7)

备注:在list里面通过*(其实就是在进行数据复制操作),但是在内存里面相同的数
据不可能替换或者覆盖,程序还,—在工作当中不建议使用!------数据的批处理bath

(3).判断列表里面面的元素是否存在
in在列表里面表示判断列表元素的存在性,如果存在返回true,不存在返回false

stus = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print('猪八戒’in stus)
print('猪八’in stus)
print('猪八戒’not in stus)
print('猪八’not in stus)

 备注:(1) in 和 not in ------经常使用! 就是对数据的筛选操作,只要以后一道数据的筛选操作几乎都是安全的。(2)  in  not  in  和数据库的  in  not   in 一样!(3) where 和 having的区别?浅谈where:表示一个条件判断,会在数据操作过程里面降低数据库的性能问题!浅谈having:表示的是数据的筛选操作! 和python的list列表很相似-----建议使用having!

stus1 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘max最大值:’,max(stus1))
print(‘max最小值:’,min(stus1))
print(‘max最大值/最小值:’,max(stus1),min(stus1))

总结:字符串在函数 max min sum avg 等足有计算函数对的操作里面,不能继续函数的功能实现,不能参与运算。所以:字符串是不可以随意更改,并且字符串有len长度,str 和 java中的final很相似 不可被更改!

stus2 = [12,12122,121212,4,5,6,6]
print(‘max最大值/最小值:’,max(stus2),min(stus2))

总结:最大的幕后黑手boss就是python解释器自动判断是什么type类型
print(stus2.index(12))
index表示通过具体的值获取到list的下标的位置!------较少使用
说明:传统的大数据可以利用excel表格,现在不行!现在用互联网技术,例如:Hadoop spark hive hbase

print(stus2.index(1)) #没有找到list里面的元素抛异常:ValueError: 1 is not in list
stus3 = [12,12122,121212,4,5,6,6,45 ,666]
print(‘count统计list里面元素出现的个数是:’,stus3.count(12))

count函数的讲解
1.count表示统计,并非计算函数!
2.统计的原理? 数据出现的’次数’,不是‘多少条数据’
3.java里面学过count?
select count(*) from emp; 假设:DB有100条data DB有10000条data
传统的网站:访问量利用count
现在jd、阿里、-----插件开发:计数器

list列表元素的操作

修改元素

stus5 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
###通过index下标修改元素的值
stus5[0]=‘sunwukong’
print(‘修改完之后的list元素的值为:’,stus5)

重点强调: index的修改用法注意1.通过index索引修改的数据只是在控制台给客户打印输出,不能将原始数据库数据进行             修改!2.通过index修改元素并不影响元素数据的性能、数据完整性、也不会造成数据的脏读、脏写操作!3.企业开发获取参数的值、获取数据库表字段建议使用index!操作安全、快捷、方便!
总结:-------重点 在数据库操作数据的时候,什么时候可以利用索引? 什么时候不可以用索引操作数据?
备注:如果一行数据经常被修改、访问、更新操作,不能使用索引操作此数据。
后果:1.内存溢出2.造成数据的缺失---数据完整性 3.给内存里面造成负载均衡!tomcat+ngix集群+hadoop(分析大数据)+slor(全文检索)+redis(缓存数据库---非关系型数据库---数据库没关联---保证数据库安全性)例如:双11 访问redis

stus6 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘通过del删除list列表的元素之前值为:’,stus6)
del stus5[2]
print(‘通过del删除list列表的元素之后值为:’,stus6)
备注:通过index的下标删除数据 注意利用del删除元素,只会删除元素内存里面的内容,并不会将数据内存的地址彻底删除。

stus7 = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
print('通过append给列表添加新元素--添加之前:',stus7)
stus7.append('蔡徐坤')
print('通过append给列表添加新元素--添加之前:',stus7)stus8 = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
stus8.insert(3,'吴亦凡')
print('insert的之后的值:',stus8)  #insert在内存中顶部插入元素stus9 = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
stus9.extend(['唐僧','白骨精'])  #将list列表以参数的身份传递给extend
stus9+=['唐僧','白骨精']    #拼接
print(stus9)

内存流程图

☆1.extend是动态参数形式去获取列表元素----动态直接操作数据
☆2.拼接列表是通过 + 表示的是静态操作----静态不操作数据

stus10 = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
#stus10.clear()
print('通过clear方法清除元素之后的结果:',stus10)  #只清除内容   地址不会清除  有利于数据恢复
result=stus10.pop(2)
print('通过pop方法删除元素之后的结果:',result)           ☆ #pop通过地址映射直接给客户   #pop原理(类似于:主库 -----保持数据的同步就ok -----从库)stus11 = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
stus11.reverse()
print('通过reverse反转之后的值:',stus11) # 基于客户端
stus12=[10,12,13,14,15,16,-2]
stus12.sort()   #默认升序排列
print(stus12)
stus12.sort(reverse=True)
print(stus12)

列表list:其实就是一个存放数据的集合 ------数据肯定需要循环遍历结果 ------输出给客户端

遍历数据的结果集有哪几种?

1.for循环 -------加强for循环
for(参数1:参数2)
public static void main(String arg[]){}
2.迭代器
3.foreach
备注:list里面的元素利用[]定义 —遍历结果集也可以用… (表示无穷大)
python里面利用 : 后面跟可执行的代码体

‘’’
stus13 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘遍历stus13的结果集’,stus13[0])
print(‘遍历stus13的结果集’,stus13[2])
print(‘遍历stus13的结果集’,stus13[3])
print(‘遍历stus13的结果集’,stus13[4])
思考:以上遍历结果集等价于 get() set()方法 和new对象 ------ 效率不高,企业不会利用这种方式
备注:python语言通过 : 写代码的执行部分, : 和java中的[]等价

i = 0
while i < len(stus):print(stus[i])i += 1while(变量名称,变量类型)j = 0
while j<len(stus13):print(stus13[j])j=j+1for k in  stus13:print(k)

备注:通过以上操作发现 python语言简称胶水语言

实训第 3 天 ------ 7.17相关推荐

  1. 【R语言】使用leaflet绘制沈阳地铁线路图——R实训第六次作业

    参考: 一.惭愧惭愧,基本都是抄自这个大牛学长,自己做了一部分改进--R语言绘制沈阳地铁线路图 二.这个发布的时间比学长还要早(学长可能也借鉴过)--上海地铁数据可视化 三.这个是真正的大牛,从他的文 ...

  2. 接鸡蛋java_信息与传媒系举办17级计算机应用技术java专项实训汇报

    原标题:信息与传媒系举办17级计算机应用技术java专项实训汇报 7月6日,信息与传媒系在3-333教室召开17级计算机应用技术"java专项实训汇报会",此次汇报由陈娅冰老师主持 ...

  3. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  4. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  5. 计算机会计应用实训,计算机会计模拟实习报告.pdf

    <计算机会计模拟实习> 实习报告 专业年级 学 号 姓 名 指导教师 2014 年 6 中国 一.实习内容(根据实践教学大纲填写) 1.建立帐套.按照教师给予的相关企业的内容,建立一套新帐 ...

  6. BeagleBone Black项目实训手册(大学霸内部资料)

    BeagleBone Black项目实训手册(大学霸内部资料) 介绍:本教程是<BeagleBone Black快速入门教程>的后续教程.本教程以项目操作为主,讲解LED项目.声音项目.传 ...

  7. python实训项目-黑马程序员上海校区Python21期Django项目实训

    黑马程序员上海中心 月薪一万只是起点 关注 晚上十点,一名名Python学生正在酣畅淋漓地撸代码,手指不间断地敲击着键盘,发出机械而清脆的声音. 各个小组在经过为期4天的django项目小组开发,终于 ...

  8. 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc

    (整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...

  9. 安卓实训项目:基于储存卡音乐播放器实训报告5.0

    安卓实训项目:基于储存卡音乐播放器实训报告5.0 (一)功能要求 在基于存储卡音乐播放器V0.4基础上,作如下修改: 1.创建应用程序常量接口保存广播频道常量 2.在音乐播放器应用程序类里添加两个属性 ...

最新文章

  1. 简书非官方大数据(一)
  2. Oracle执行计划显示
  3. 平安iq测试没通过的话影响入职吗_从外包测试到阿里巴巴,一位三本女生逆袭之路...
  4. java wait源码_Java精通并发-透过openjdk源码分析wait与notify方法的本地实现
  5. Java中常用集合类对比_集合比较
  6. java字符串拆分成数组_Java StringUtils字符串分割转数组的实现
  7. ASP.Net本地化/国际化解决方案原理和代码示例
  8. roseha linux,ROSEHA双机软件图解安装配置linux.docx
  9. 【python】tkinter教程、35个tkinter示例代码和GUI图示
  10. 使用PS把证件照背景变成白色
  11. NRF52832-DFU升级-蓝牙抓包数据解析
  12. SSD固态硬盘是什么? 由来、分类、优缺点,尽在这里
  13. 利用Meshlab旋转三维点云模型
  14. 【读书笔记】《正面管教》——我们都不完美,但我们相处的很快乐
  15. Arcgis js featureLayer加载完成之后,对其加载的要素重新定义样式
  16. 基于stm32的BMS电池管理系统源代码-带u基于stm32的BMS电池管理系统源代码-带ucos操作系统
  17. mysql 计算gps坐标距离_mysql实现经纬度计算两个坐标之间的距离
  18. QQ IDKey生成
  19. 计算机主机突然断电有什么影响,台式机突然断电有什么危害
  20. 40多个JAVA手机游戏打包

热门文章

  1. 什么是事务传播行为?
  2. js四舍五入小数位的函数
  3. 结对项目——四则运算 “软件”之升级版
  4. 基于K-Means的文本聚类算法
  5. 如何提高讲话思维逻辑能力?
  6. VS Code ---- 使用笔记
  7. 现代软件工程 教学博客 邹欣
  8. js获取当前域名、Url、相对路径和参数
  9. 13.2 打印图形和文字
  10. 如何建立编程思想和提高编程思想