Python档案袋(列表、元组、字典、集合 )
列表
可以同名,有序(通过下标可找到)
取值:
1 #声明列表
2 listx=["L0","L1","L2",33,"L4"]
3 print(listx) #输出:['L0', 'L1', 'L2', 33, 'L4']
4 print(len(listx)) #统计总个数,输出:5
5 print(listx[1]) #下标取值,输出:L1
6 print(listx[0:2])#切片区间为:[0,2),输出:['L0', 'L1']
7 print(listx[:2])#输出:['L0', 'L1']
8 print(listx[-1])#倒数第一个,输出:L4
9 print(listx.index("L1"))#查找内容的下标,查找到第一个,输出:1
10 print(listx.count("L4")) #统计值为L4的个数 输出:1
遍历:
1 #声明列表
2 listx=["L0",[11,22,33],"L1"]
3
4 print(type(listx)) #输出类型为:<class 'list'>
5
6 for i in listx:
7 print(i) #输出:L0 [11, 22, 33] L1
修改:
1 #声明列表
2 listx=["L0","L1","L1"]
3
4 listx[2]="L1.1" #修改值
5 listx.append("L2") #追加,结尾添加
6 listx.insert(1,"L1.0") #插入,参数(位置,内容)
7
8 listx.reverse()#反转
9 listx.sort()#排序
10
11 print(listx) #输出:['L0', 'L1', 'L1.0', 'L1.1', 'L2']
删除:
1 #声明列表
2 listx=["L0","L1","L2",33,"L4"]
3 listx.remove("L2") #删除,以内容
4 del listx[0] #删除,以下标
5 listx.pop(0) #删除,以下标,默认删除最后一个
6
7 #listx.clear() #清空列表
8 print(listx) #输出:[33, 'L4']
利用for循环的列表生成:
#生成列表,for循环的值传递到前面的算式进行值的修改
listx=[i*10 for i in range(10)] print(listx)#输出:[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
列表排序:
#排序
listx=[20,100,66,99,11]
print(sorted(listx)) #排序,输出:[11, 20, 66, 99, 100]
列表合并:
list1=[11,22]
list2=[99,88] list1.extend(list2) #扩展
print(list1) #输出:[11, 22, 99, 88]
列表的一一对应:
1 #一 一对应
2 list1=[11,22,33,88]
3 list2=["cc","bb","aa","dd"]
4 res=zip(list1,list2)#变成一个迭代器
5 print(next(res)) #输出:(11, 'cc')
字符串与列表的转换:
函数eval()可以将格式化的字符串转换为列表、字典等数据类型
1 a="[11,33,55]"
2
3 #转换函数
4 aa=eval(a)
5 print(aa[2]) #输出:55
6
7 #进列表转换为字符串
8 print(type(str(a))) #输出:<class 'str'>
浅copy,只copy第一层:
1 #声明列表
2 listx=["L0",[11,22,33],"L1"]
3
4 list2=listx.copy()#浅copy,只copy第一层
5
6 list2[0]="L0000" #只改自己
7 list2[1][2]=3333333333 #一改全改
8
9 print(listx)#输出:['L0', [11, 22, 3333333333], 'L1']
10 print(list2)#输出:['L0000', [11, 22, 3333333333], 'L1']
深copy,独立分配内存空间
1 import copy
2
3 #声明列表
4 listx=["L0",[11,22,33],"L1"]
5
6 list2=copy.deepcopy(listx)#深copy,独立分配内存空间
7
8 list2[0]="L0000" #只改自己
9 list2[1][2]=3333333333 #只改自己
10
11 print(listx)#输出:['L0', [11, 22, 33], 'L1']
12 print(list2)#输出:['L0000', [11, 22, 3333333333], 'L1']
元组:
值不可更改,值可重复,有序(通过下标可找到)
1 #声明元组
2 va=("dongxiaodong","东小东","222","dong","dong",("11",22,33))
3
4 print(type(va))#类型,输出:<class 'tuple'>
5
6 print(len(va)) #总个数,输出:6
7
8 print(va.count("dong")) #统计某个值的个数 输出:2
9
10 print(va.index("dong")) #查询值的下标 输出:3
11
12 print(va[1]) #下标取值,输出:东小东
字典:
无序,键不可重复
1 #创建字典方法1
2 va={"v1":"111","v2":"222",33:"333"}
3
4 #创建字典方法2
5 va2=dict.fromkeys(["v1","v2",33],"xxxxx") #创建不同的键对应一个值
6 print(va2) #输出:{'v1': 'xxxxx', 'v2': 'xxxxx', 33: 'xxxxx'}
7
8
9 print(va[33]) #通过键取值,不存在则报错
10 print(va.get(44)) #存在则返回值,不存在则返回None
11
12 print("v1" in va) #判断键是否存在字典中
13
14 va["v1"]="1x1x1x1" #修改
15
16 va["v3"]="xxxx333333" #添加
17
18 va.update({"v1":"vvvvv11111","v4":"444444"}) #键存在则更新值,键不存在则创建
19
20 print(va.items()) #输出:dict_items([('v1', 'vvvvv11111'), ('v2', '222'), (33, '333'), ('v3', 'xxxx333333'), ('v4', '444444')])
21
22
23
24 #del va["v2"] #删除某对
25 #va.pop("v3") #删除某对
26
27 #va.popitem() #随机删除一对,默认删除最后一对
28
29 #del va #删除所有
30
31 print(va) #打印所有
32
33
34 #字典循环打印方法1
35 #效率较高,推荐
36 #循环键
37 for i in va:
38 print(i,va[i])
39
40 #字典循环打印方法2
41 #循环键值
42 for k,v in va.items():
43 print(k,v)
字典的排序
1 #排序
2 a={"5":55555,"2":88888,"32":22222}
3
4 #按键排序,键的数据类型必须一样
5 #输出:[('2', 88888), ('32', 222222), ('5', 55555)]
6 print(sorted(a.items()))
7
8 #按值排序,值的数据类型必须一样
9 #输出:[('32', 22222), ('5', 55555), ('2', 88888)]
10 print(sorted(a.items(),key=lambda x:x[1]))
集合
值不可重复,重复则保留其中一个,无序,因为集合是无序的,所以取值一般都是经过for循环,而不会使用下标取值
1 listx1=set(["10",10,11,12,12])
2 print(listx1) #输出:{10, 11, 12, '10'}
3
4 listx2=set([10,100])
5
6 #交集
7 #方法1:
8 print(listx1.intersection(listx2)) #输出:{10}
9 #方法2:
10 print(listx1 & listx2)#输出:{10}
11
12 #并集
13 #符号为:|
14 print(listx1.union(listx2)) #输出:{100, 10, 11, 12, '10'}
15
16 #差集
17 #符号为: -
18 # 在listx1中有,但listx2中没有的,参数可有对换
19 print(listx1.difference(listx2)) #{11, 12, '10'}
20
21 #子集
22 #listx2w是不是listx1的子集,返回bool
23 print(listx2.issubset(listx1)) #输出:False
24
25 #父集
26 #listx1是不是listx2的父集,返回bool
27 print(listx1.issuperset(listx2)) #输出:False
28
29 #对称差集
30 #在并集的基础上将两个集合都有的元素去掉
31 print(listx2 ^ listx1) #输出:{100, 11, 12, '10'}
32
33 listx2.add("dongxiaodong") #添加一项
34 listx2.update(["dong1","dong2"]) #添加多项
35
36 listx2.remove("dong1") #删除一项,不存在会报错
37 listx2.discard("dong1")#删除一项,不存在会返回None
38
39 print(len(listx2)) #打印长度
40
41 print(listx2)
Python档案袋(列表、元组、字典、集合 )的更多相关文章
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- python 中列表 元组 字典 集合的区别
先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...
- python的列表元组字典集合比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python_列表——元组——字典——集合
列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...
- python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)
列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...
- Python 列表&元组&字典&集合
列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...
- Python之列表&元组&字典
今天学习了Python的基本数据类型,做以下笔记,以备查用. 一.列表 列表的常用方法: 1.append()方法 def append(self, p_object): # real signatu ...
- Day 07 数据类型的内置方法[列表,元组,字典,集合]
数据类型的内置方法 一:列表类型[list] 1.用途:多个爱好,多个名字,多个装备等等 2.定义:[]内以逗号分隔多个元素,可以是任意类型的值 3.存在一个值/多个值:多个值 4.有序or无序:有序 ...
随机推荐
- 几道比较有意思的js面试题
1.[] ? !![] : ![];输出结果是什么? 1 2 3 4 5 let val = [] ? !![] : ![]; console.log(val); //true: //之前的错误解释 ...
- Snakes 的 Naïve Graph
题解: 首先分析一下这个问题 发现等价于是求n之内与n互素的数的个数,即欧拉函数 这个可以线性筛 但发现还应该减去$x^2==1$的情况 这个东西不是那么好处理 考虑用中国剩余定理拆 因为$p1^{a ...
- Visual Studio Code 搭建Python开发环境
1.下载Python https://www.python.org/downloads/windows/ 选择一个版本,目前2.0的源码比较多,我下载的2.7.12 2.配置环境变量 3.Visual ...
- 关于Hbase的预分区,解决热点问题
Hbase默认建表是只有一个分区的,开始的时候所有的数据都会查询这个分区,当这个分区达到一定大小的时候,就会进行做split操作: 因此为了确保regionserver的稳定和高效,应该尽量避免reg ...
- RESTful-5开发API
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计. 它的大原则容易把握,但是细节不容易做对.本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API. ...
- hbase读的性能优化
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...
- git使用命令讲解
1.创建版本库 ①选择一个合适的地方,创建一个空目录 mkdir learngit cd learngit ②通过git init命令把这个目录变成Git可以管理的仓库: git init Git ...
- 使用loadrunner录制手机脚本
1.安装loadrunner补丁包4: 2.安装了loadrunner的PC端上面创建WiFi热点,将手机接入该WiFi: 3.然后打开loadrunner,选择录制协议为手机的协议: 4.弹窗中选择 ...
- MyIbatis和Hibernate的区别--2019-04-26
1.MyBatis 真正实现了java代码和sql的分离 2.Hibernate 是全自动的,MyBatis是半自动的 Hibernate实现了部分自动生成SQL 3.SQL优化上 MyBatis 强 ...
- CentOS7配置mailx使用外部smtp服务器发送邮件
转自huskiesir的博客: 发送邮件的两种方式: 1.连接现成的smtp服务器去发送(此方法比较简单,直接利用现有的smtp服务器比如qq.新浪.网易等邮箱,只需要直接配置mail.rc文件即可实 ...