Python之列表(学习笔记)
目录
列表的简单使用:
列表的 增 删 改 查:
增加元素:
删除元素:
修改元素:
查询元素:
元素排序:
关于解决remove()的漏删问题:
交换两个变量的值:
常规方法:
Python中的特有方法:
Python中的列表好比一个容器,可装任何类型数据。
如何定义一个列表:
1.空列表: [ ]
2.有内容的列表: [' ',' ',' '], [1,2,3,4],[3.5,9.9,5.2] #可放任意数据类型,还可在列表里嵌套列表
3.列表间可相加,即列表的连接
列表的简单使用:
list1 = []
list2 = ['牛奶', '12', '辣条', '方便面'] # 与字符串中的机制十分相似
print(list2)
print(list2[2])
输出:
['牛奶', '12', '辣条', '方便面']
辣条
列表的切片类似于字符串的切片: (使用时要注意输出包前不包后)
# 切片
list2 = ['牛奶', '12', '辣条', '方便面']
print(list2[2:4]) #start ,end 包前不包后
print(list2[::-3])
print(list2[-1:1:-2]) # start 和 end 的方向不能 和 step的方向冲突,否则显示为空
输出:
['辣条', '方便面']
['方便面', '牛奶']
['方便面']
列表的 增 删 改 查:
增加元素:
append(元素) # 类似于入栈操作;还可以把列表添加到列表里,实现嵌套
extend(列表名) # 添加一个列表(接连的添加元素,但不能加入整个列表);实现列表的合并
insert(位置,元素) # 在指定位置添加元素,占用位置后,其他元素向后移动
删除元素:
remove(元素) # 根据输入元素名,从左往右删除对应的元素;若无此元素则报错(可先使用 in 判断是否存在要删除的元素);存在多个同名元素时,仅删除第一个
clear() #清空列表
pop(位置) # 注意:下标写的时候不要超范围,否则会报错;不写内容时从后默认往前删
del #与pop机制相似
修改元素:
index(元素) #从左到右,根据元素返回其第一个下标(若无此元素则报错)
然后可通过: 列表名 [index] = 新值
查询元素:
1.元素 in 列表 返回bool类型 ; 元素 not in 列表
2.列表.index(元素) 返回索引号
3.列表.count(元素) 返回元素在列表的数目,为整数
元素排序:
sort(reverse) #当没有参数时,默认升序;当参数 reverse = True 时,为降序
reverse() #单纯的把列表倒过来输出
也可 "手动" 冒泡排序:
#冒泡排序
numbers = []
#随机生成8个1~100的整数,并添加到列表中
for i in range(8):ran = random.randint(1,100) numbers.append(ran)
print(numbers)
#对列表的元素进行排序
for j in range(0,len(numbers) - 1):for i in range(0,len(numbers)-j-1): #一轮后,把最大 的数送到最后的位置if numbers[i] > numbers[i+1]:a = numbers[i]numbers[i] = numbers[i+1]numbers[i+1] = a
print(numbers)
关于解决remove()的漏删问题:
在列表中出现连续的字符串时,使用这种方法删除会导致漏删.
# 连续出现同一字符串会出现漏删的情况
list2 = ['赛恩', '泰达米尔', '维嘉', '维嘉', '莫德凯撒']
for i in list2:if i == '维嘉':list2.remove(i) # 由于删除后,后面元素自动补上,再移动索引会出现指向错误
print(list2)
机制:由于索引2号位的 '维嘉' 被删后,在下一轮循环中,第二个 '维嘉' 自动补上到索引2号位,但此时循环已遍历到3号位,没有检测到补上的2号位 '维嘉' ,故出现漏删。
使用while循环解决漏删问题:
# 使用while循环解决漏删问题
list2 = ['赛恩', '泰达米尔', '维嘉', '维嘉', '莫德凯撒']
n = 0
while n < len(list2):if list2[n] == '维嘉':list2.remove('维嘉') # 移除后索引不动,后面字符串自动补上else:n += 1
print(list2)
机制:移除后索引不动,后面字符串自动补上,下次循环检测同一索引位
for循环的改进,解决漏删问题:
# for循环的改进,解决漏删问题
list2 = ['赛恩', '泰达米尔', '维嘉', '维嘉', '莫德凯撒', '维嘉', '维嘉']
for i in list2[::-1]: # 倒着删。由于删除一个元素,其余元素向左补充if i == '维嘉':list2.remove('维嘉')
print(list2)
机制:for循环遍历时,列表步长为-1,从右向左遍历,检测到 '维嘉' 后,再从左往右删除一个'维嘉',字符串向左补上,下一循环进行时,索引位向左,还可以检测到 '维嘉' ,再次进行删除
list2 = ['赛恩', '泰达米尔', '维嘉', '维嘉', '莫德凯撒', '维嘉', '维嘉']
for i in range(list2.count('维嘉')): #删除确定数量的字符串list2.remove('维嘉')
print(list2)
机制:计数待删除字符串数目,再for循环控制删除次数进行删除
关于del的特殊机制:
在使用上,del和pop()类似:
list1 = ['1', '2', '3', '4', '5', '6']
del list1[3]
print(list1)list1 = ['1', '2', '3', '4', '5', '6']
list1.pop(3)
print(list1)
均可删除索引3号位元素
用clear时:
list2 = ['赛恩', '泰达米尔', '维嘉', '维嘉', '莫德凯撒']
list1 = list2 #当列表1 = 列表2 ,表示它们的地址一样,其中一个改变,另一个也会改变list2.clear()
print(list1) # 对list2清空,相当于把地址中的值清除。而list1和list2地址一样,故都没有值
当列表1 = 列表2 ,表示它们的地址一样,其中一个改变,另一个也会改变
对list2清空,相当于把地址中的值清除。而list1和list2地址一样,故list1也没有值
del相当于在指针层面进行操作:
a = 'hello'
b = a
c = a
print(id(b),id(c),id(a)) #其地址一样
del a #删去a的指针,不存在a,也就更加没有所对应的值
print(b, c)
注:b,c 的地址均等于 a 的地址,del a 之后,相当于断掉了a对应地址的指针,不存在a,此时输出a会报错,而输出b,c没有问题。
总结:del 用于单个元素的清除(相当于断掉一个元素对应地址指针,其余指向该地址的元素指针 不受影响)
clear 清除时,与清除元素地址一致的元素也会遭到清除
交换两个变量的值:
常规方法:
# 交换 a , b 的值a = 2
b = 4
# 取一“容器” c
c = a
b = c
a = b
print(a,b)
Python中的特有方法:
#交换两个变量的值
a = 2
b = 3
a,b = b,a
print(a,b)c = 5
a,b,c = b,a,b #b的值给a; a的值给b; b的值给c
print(a,b,c)
Python之列表(学习笔记)相关推荐
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- 关于Python的一些学习笔记(小白式笔记,持续更新)
关于Python的一些学习笔记 瞎bb: 作为一个计算机专业的学生,Python应该是一门很有必要掌握的语言,但是由于鄙人太懒,一直对Python没有太多了解,但是随着知识的积累以及学业难度的增加,我 ...
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
- python基础知识学习笔记(2)
python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...
- python基础知识学习笔记(1)
python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...
- python标准库学习笔记
原创:python标准库学习笔记 数据结构 bisect 模块里实现了一个向列表插入元素时也会顺便排序的算法. struct - 二进制数据结构:用途:在 Python 基本数据类型和二进制数据之间进 ...
- Python最优化算法学习笔记(Gurobi)
微信公众号:数学建模与人工智能 github地址:https://github.com/QInzhengk/Math-Model-and-Machine-Learning Python最优化算法学习笔 ...
- Python实现Word2vec学习笔记
Python实现Word2vec学习笔记 参考: 中文word2vec的python实现 python初步实现word2vec 中英文维基百科语料上的Word2Vec实验 GitHub代码地址 1 文 ...
- python白帽子学习笔记(整合)
python白帽子学习笔记(整合) 学习笔记目录 python白帽子学习笔记(整合) 前言 一.基础篇 1.正则表达式 2.列表 3.元组带上了枷锁的列表 4.奇葩的内置方法 5.格式化字符 6.序列 ...
最新文章
- 【转载】register、volatile、restrict 三关键字的用法
- SharePoint Portal Server与SharePoint Services之间的关系
- ThreadPoolExecutor的execute源码分析
- C语言用递归函数求1累加到100求和
- ns-allinone错误锦囊
- Effective C++ 条款12
- DevOps发布策略简介
- 全球数据库--基金/管理产品--分类/行业平均
- 在java中蓝色_Java基础
- 关于ASP.NET与CLR相互关系的一些总结
- Debian,从安装到喜欢
- 四合一小说漫画听书视频网站源码 带采集
- 斐波那契数列 Java 实现。
- 实现一个简单的类似spring的pointcut正则表达式
- otg usb 定位_USB接口中的秘密——强大的OTG功能
- Windows系统跨硬盘合并分区
- 空中夺命“杀手锏”!以色列研发致命性无人机,让人毛骨悚然
- 【两周快速入门pr】三、定格动画制作-基础操作成就你的脑洞
- 五、Lua 变量的学习
- Mybatis如何实现分页
热门文章
- LR字符串截取lr_save_var
- 解决嵌入百度导航4.1.x遇到的坑
- 云学智慧校园-高校信息化一体化平台 V2.0 SE-WBS排期表(初拟)
- 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能
- 陕西活性炭需求分析_活性炭市场需求分析及发展趋势预测
- 网络创业者莱恩-福克斯:最后一分钟的奇迹
- 简单了解计算机基础知识
- Errors during downloading metadata for repository ‘AppStream‘: - Status code: 404 for http://mirro
- 外贸公司怎么群发邮件?群发邮件邮箱怎么发更高效?
- elementui+vue+springboot企业员工工资考勤请假系统