“”"
List列表的作用:
1:存放数据,并且list存放数据是安全的,但是不能存放大数据的东西,例如:音频、视频、图片等。
2:list可以遍历数据库的结果集,后续讲解MySQL、Oracle和Python操作。————重点内容
3:list的底层原理是一个bean容器。————重点

“”"
#定义List列表[]
my_list1 = [] #空列表 思考? []其实就是一个内存空间,所以list可以在[]里存放数据。
my_list2 = [10] #10表示给list列表开辟大小为10的空间内存
my_list3 = [‘saber’,‘archer’,‘lancer’,‘berserker’] #给列表赋值 表示内存里面有4个字符串
#扩展:String str = new String(‘abc’) ? 产生几个对象? ——2个 研究堆栈内存的原理
#重点——列表里可以存放任意类型的东西————list其实也是面向对象
my_list4 = [‘hello’,12,12.0,True,‘蛋哥’]
“”"
2:如何操作列表
备注:如果后面或去企业拿到一个新技术,此技术只要可以存放数据,那么这个技术的核心就是CRUD(增加、删除、查询、修改)
(1):list列表通过下标index获取值
下标的工作原理:
i:下标是可以被改变的,更改下标对list的内存空间没有任何的影响
ii:主键primary key id = 1 删除, 例如:银行卡,id可以删除,但是会影响数据的性能问题,数据不好维护
“”"
my_list5 = [‘魔术士’,‘assassin’,‘rider’,‘450’,233,3.12]
print(my_list5[0])
print(my_list5[2])
#print(my_list5[7]) #list超出内存空间,报异常IndexError: list index out of range
print(my_list5[-1]) #-1表示按照倒序获取值
#print(my_list5[-7]) #list超出内存空间,报异常IndexError: list index out of range

“”"
列表list
1:len属性函数 len方法 ?
备注:如何区别属性和方法?
len(0) 0表示的是list里存放的对象
“”"
print(‘my_list5的长度为:’,len(my_list5))
#print(‘my_list5的长度为:’,len(0))
“”"
列表切片
1:什么是切片?例如:一个西瓜 可以切成很多“块” ——“块”指的就是数据块
list的切片就是通过index将一个完整的字符串或者list进行划分不同的值

“”"
stus = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘切片以后的值为:’,stus[1]) #并不是切片
print(‘切片以后的值为:’,stus[1:1]) #内存空间,切片必须保证数据的完整性
print(‘切片以后的值为:’,stus[1:2])
print(‘切片以后的值为:’,stus[1:3])
print(‘切片以后的值为:’,stus[1:4])
print(‘切片以后的值为:’,stus[1:6])
print(‘切片以后的值为:’,stus[1:9]) #在数据切片过程当中,如果切片的次数大于list里的数据,程序不会报错,因为有足够的内存
print(‘切片以后的值为:’,stus[0:9])
print(‘切片以后的值为:’,stus[-1:9])
#备注:在列表切片操作过程中,[1:1]会将数据进行破坏,违背数据的:原理性、离子性

如果省略结束位置,则会一直截取到最后

如果省略起始位置,则会从第一个元素开始截取

print(‘省略切片结束以后的值为:’,stus[1:])
print(‘省略切片开始以后的值为:’,stus[:5])
print(‘省略切片开始以后的值为:’,stus[:9])
#总结 list 列表的核心特性:只包含开始索引位置,不包含结束索引位置
#如果起始位置和结束位置全部省略,则相当于创建了一个列表的副本
print(‘起始位置和结束位置全部省略的值:’,stus[:]) #此操作在工作中尽量不要出现
“”"
备注: 因为 表示的是一个内存,如果没有起始位置和结束位置的定义,这个内存默认就是无限大
这样会导致大量的内存空间闲置,最后会导致程序、数据的空闲例程。
思考?什么是线程安全和线程不安全? ——重点面试题目
线程安全:多个线程在操作过程当中,一个线程在执行的时候,另一个线程不能执行,采用了加锁机制,
来保证数据的安全性,直到线程1结束释放CPU资源,线程2才可以执行。
线程不安全:多个线程在执行的过程当中,大家都在抢=抢夺CPU资源,最终导致服务器崩溃,数据泄露,线程发生死锁问题。
什么是死锁?死锁如何解决? ————课下自己研究(重点内容)
4:列表list
语法:列表[起始:结束:步长]
步长表示,每次获取元素的间隔,默认值是1
print(stus[0:5:3])
步长不能是0,但是可以是负数

“”"
stus = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
#print(‘步长操作:’,stus[::0]) #ValueError: slice step cannot be zero
print(‘步长操作1:’,stus[1:2:1]) #表示步长为1
print(‘步长操作2:’,stus[1:3:1]) #表示步长为1
print(‘步长操作3:’,stus[1:4:1]) #表示步长为1
print(‘步长操作4:’,stus[1:4:-1]) #表示步长为-1 备注:步长的负数不建议使用
“”"
1:步长表示的是一个间隔,用于间隔数据,如果步长为负,对于数据来讲,进行数据的读写操作很慢,
因为不确定数据的开始值和结束值,即没有最大值和最小值。数据不好维护,并且会产生数据的垃圾碎片
——最终导致数据的脏读(脏数据)。
例如:1 2 3 4 5 6 7 8 9 10

“”"
my_list6 = [‘saber’,‘archer’,‘lancer’]+[‘caster’,‘assassin’,‘rider’]
print(‘list拼接之和的值:’,type(my_list6))
print(‘list拼接之和的值:’,my_list6)
#list的拼接原理

my_list7 = [‘saber’,‘archer’,‘lancer’]2
print('list
之后的结果:’,type(my_list7))
print('list之后的结果:’,my_list7)
#备注:在list里面通过
(其实就是在进行数据的复制操作),但在内存中相同的数据不可能替换或者覆盖,

程序还是会重新分批内存空间,在工作当中不建议使用。 ——数据的批处理Bath

“”"
2:列表的 + *
<1:数据是以左边的数据列表为主列表,右边的为子列表。
<2:列表拼接之和就是一个完整的list,将值默认存放到堆内存里面。
❤️:列表遵守数据的先进后出,后进先出的原理。
<4:判断列表中的元素是否存在
“”"
#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。

stus = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘max最大值:’,max(stus))
print(‘min最小值:’,min(stus))
#字符串在函数max min sum avg 等具有计算函数对的操作里面,不能继续函数丶功能实现,不能参与运算。

所以字符串不可以被随意更改,并且字符串有len长度。

stus2 = [11,22,33,44,55,66,77,88]
print(‘max and min最大/小值:’,max(stus2),min(stus2))
#总结:最大的幕后黑手boss就是Python解释器 自动判断是什么type类型
print(stus2.index(11))
#index表示通过具体的值获取到list的下标位置

说明:传统的大数据可以利用Excel表格,现在不行,现在利用互联网技术Hadoop、spark、hive、HBASE

print(stus2.index(1)) #没有找到list中的元素,抛异常 ValueError: 1 is not in list

stus2 = [11,22,33,44,55,66,77,88,99,88,77]
print(‘count统计list中元素出现的个数:’,stus2.count(77))
“”"
1:count表示统计,并非计算函数
2:统计的原理 数据出现的‘次数’,不是‘多少条数据’
3:Java中学过count?
select count(*) from emp;
假设:DB有 100 data DB有 10000 data
传统的网站:访问量利用count
现在的JD、阿里、
“”"

“”"
list列表元素
1:修改元素
“”"
stus3 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘修改之前的列表元素值为:’,stus3)
#通过index下标修改元素的值
stus3[0] = ‘sunwukong’
print(‘修改之后的list元素值为:’,stus3)
#重点强调 index的修改用法
1:通过index索引修改的数据只是在控制台给客户打印输出,不能将原始数据库进行修改。
2:通过index修改元素并不影响元素的性能、数据完整性、也不会造成数据的脏读、脏写操作。
3:企业开发获取参数的值、获取数据库表字段建议使用index,操作安全、快捷、方便。
总结:——重点 思考提问?在数据库操作数据的时候,什么时候可以利用索引?什么时候可以不利用索引操作数据?
#备注:如果一行数据经常被修改、访问、更新操作,不能使用索引操作此数据
    # 后果:(1)内存溢出;(2)会造成数据的缺失——数据的完整性;(3)给内存里造成负载均衡。
    # tomcat + nigx集群 + Hadoop(分析大数据) + slor(全文检索) + Redis (缓存数据库)——非“关系”型数据库
s

“”"
list列表元素
1:修改元素
“”"
stus3 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘蜘蛛精’,‘白骨精’]
print(‘修改之前的列表元素值为:’,stus3)
#通过index下标修改元素的值
stus3[0] = ‘sunwukong’
print(‘修改之后的list元素值为:’,stus3)
#重点强调 index的修改用法

tus4 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
print(‘通过del删除list列表的元素之前值:’,stus4)
del stus4[2]
print(‘通过del删除list列表的元素之后值:’,stus4)

通过index的下标删除数据 .注意:利用del删除元素,只会删除元素内存里面的内容,并不会将数据库内存的地址彻底删除el 来说,它是根据索引(元素所在位置)来删除的.remove 是删除首个符合条件的元素。并不是删除特定的索引。pop返回的是你弹出的那个数值。

stus5 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
print(‘通过append给列表添加新元素——添加之前:’,stus5)
stus5.append(‘蛋哥’)
print(‘通过append给列表添加新元素——添加之后:’,stus5)

stus6 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
stus6.insert(3,‘宋少爷’)
print(‘insert的之后的值:’,stus6)

stus.extend([‘唐僧’,‘白骨精’])

stus += [‘唐僧’,‘白骨精’]

stus7 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
stus7.extend([‘唐僧’,‘白骨精’]) #将list列表以参数的身份传递给extend
print(stus7)
stus7 = stus7 + [‘唐僧’,‘白骨精’] #拼接
print(stus7)
“”"
1:extend这个关键字是动态参数的形式去获取列表元素————动态直接操作数据
2:拼接列表是通过 + 表示静态操作————静态不操作数据
“”"

stus8 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
stus8.clear()
print(‘通过clear方法清除元素之后的结果:’,stus8)

stus9 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
result = stus9.pop(2)
print(‘通过pop删除之后的元素:’,result)

pop原理 (类似于:主库————保持数据的同步就OK ——从库) 通过地址直接给客户

stus10 = [‘孙悟空’, ‘猪八戒’, ‘沙和尚’, ‘唐僧’, ‘蜘蛛精’, ‘白骨精’]
stus10.reverse()
print(‘通过reverse反转之后的值:’,stus10)

用来对列表中的元素进行排序,默认是升序排列

如果需要降序排列,则需要传递一个reverse=True作为参数

stus11 = [10,1,20,3,4,5,0,-2]
#stus11.sort(reveres=True)
print(‘sort修改前:’,stus11)
stus11.sort()

reversed = True

print(‘sort修改前:’,stus11)
“”"
列表list:其实就是一个存放数据的集合 ——数据肯定需要循环遍历结果 ——输出给客户端
提问?遍历数据的结果集有哪几种方法?
1:for循环——加强for循环
for(参数1:参数2)
public static void main(String args[]){}
2:迭代器
3:for——each
备注:list里的元素利用[]定义 ——遍历结果集也可以利用… (表示无穷大)
Python里利用’:’ 后面跟可执行的代码体

“”"

stus12 = [‘孙悟空’,‘猪八戒’,‘沙和尚’,‘唐僧’,‘白骨精’,‘蜘蛛精’]
print(‘遍历stus12结果集:’,stus12[0])
print(‘遍历stus12结果集:’,stus12[2])
print(‘遍历stus12结果集:’,stus12[4])
#以上遍历结果等价于 Java的get()、set()、new对象 ——效率不高,企业不会用这种方式

Python语言通过’:’ 写代码的执行部分, ':‘和Java的’{}'等价

while(变量名称,变量类型){

循环体

}

j = 0
while j < len(stus11):
print(stus11[j])
j = j+1
for k in stus11:
print(k)
#备注:通过以上操作发现,Python语言叫胶水语言

Python中的List知识相关推荐

  1. python时间str转datetime_深入了解Python中的小知识

    @Author:By Runsen time和datetime是Python处理日期和时间的标准库.在我们项目的实际开发当中使用率是非常高的.datetime模块有四个重要的类,date,time,d ...

  2. python中奇怪的知识又增加了

    本文依据该作者内容进行思考与创作,进一步学习与使用,添加个人理解与应用,由于作者使用的是py2的语法,我这里将例子转为py3语法,属于半转载内容,有兴趣的同学可点击链接前往该作者处查看,给个star, ...

  3. Python中的换行知识

    1.Python中代码的对齐非常严格,拿if举例,没有对齐会直接报错 2.Python中直接回车换行会报错,如果要把下一行的代码当做同一行,可以使用反斜杠"\",或者在括号中换行

  4. 在学习Python中,这个知识我们一定要看一遍,记不住没关系单一定要知道,字符串常用函数用法

    str.index(sub, start=None, end=None) 作用:查看sub是否在字符串中,在的话返回索引,且只返回第一次匹配到的索引:若找不到则报错:可以指定统计的范围,[start, ...

  5. Python中操作mysql知识(一)

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  6. python static 的用法_Python中static相关知识小结

    非 static 编译 不指定额外参数直接编译 Python: $ ./configure $ make 查看所依赖的共享库: $ ldd python linux-vdso.so.1 => ( ...

  7. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  8. python编程有什么用处-python中的生成器是什么?生成器有什么用处?

    在以下的文章之中我们来了解一下什么是python中生成器.了解一下python生成器是什么,以及生成器在python编程之中能起到什么样的作用. python生成器是什么? 通过列表生成式,我们可以直 ...

  9. python的 是什么-python中的生成器是什么?生成器有什么用处?

    在以下的文章之中我们来了解一下什么是python中生成器.了解一下python生成器是什么,以及生成器在python编程之中能起到什么样的作用. python生成器是什么? 通过列表生成式,我们可以直 ...

最新文章

  1. [译]从零开始成为数据科学家的9个步骤
  2. Spring学习总结1——bean的生命周期
  3. Python Matplotlib 中文显示参数设置
  4. 用C#开发的双色球走势图(原创)值得园友拥有(二)接上一篇
  5. java异常在哪一层捕获_当在一个方法的代码中抛出一个检测异常时,该异常或被方法中的 ( )结构 捕获,或者在方法的 ( ) 中声明_学小易找答案...
  6. java 对象初始化属性,JAVA中类属性的初始化
  7. 201621123053 张雨阳软工作业2
  8. EndNote20教程:中英混排问题解决方法(中文参考文献处理) 附最新版下载
  9. MySQL 数据库导出导入操作
  10. 玩转算法面试-第四章查找值之leetcod相关笔记
  11. “模块计算机类型“x64”与目标计算机类型“X86”冲突解决方案
  12. vb.net 读写文件
  13. DirectX11 With Windows SDK--12 深度/模板状态、平面镜反射绘制
  14. java 表达式写法_java内置核心4大函数式接口写法和lambda表达式
  15. alter 用法集合(持续更新)
  16. linux多进程子进程继承,Linux-fork调用后,父进程的线程是否会被子进程继承?
  17. 计算机软件行业各职位英文缩写
  18. 8CRM客户案例分享
  19. MSDC 4.3 接口规范(10)
  20. 关于技术部管理的一些思考

热门文章

  1. Qt处理路径里的斜杠和反斜杠
  2. 【IOC框架】分析与理解
  3. 腾讯也发文执行“965”工作了,7点后加班需申请?
  4. 想要自学CAD,这几款常用于3D建模作业的软件不可不备
  5. m4a音频格式转换器:让音频轻松换装
  6. AES加密原理与Java示例
  7. sql列转行,行转列,可实操
  8. 野生程序员的成长之路(下)--管理者的忧郁
  9. 凸包matlab代码,matlab求凸包
  10. 网页打开速度的心理学