下篇:python的基本数据类型以及对应的常用方法(列表、元组、字典、集合)
为了日后便于查询,本文所涉及到的所有命令集合如下:
python中的基本数据类型有数字、字符串、布尔值、列表、元组、字典。就像每一个职业有自己特定的技能,比如医生能看病,农民能种田,每种数据类型也有属于自己的技能,我们把他们的技能称为方法。
现在就开始介绍这几种基本数据类型以及他们常用到的方法
对于列表
.append() #末尾添加元素
.extend() #末尾添加元素,能够传入一个列表,然后对传入的列表拆解后添加
.insert() #指定位置添加元素
索引、切片、循环
对于元组
索引、切片、循环
记住一级元素不能被修改删除
对于字典
.get() #得到传入key对应的value
.update() #传入一个字典或者key1=value1,key2=value2这种形式进行字典更新
.keys()
.values()
.items()
for循环、索引
对于集合
集合1&集合2 #求交集
集合1|集合2 #求并集
集合1-集合2 #求差集,被减数和减数位置互换结果不同
集合1^集合2 #求交叉补集
列表
当有许多变量需要管理的时候,列表是其中的一种选择,列表的定义如下,其特征是以中括号[]括起来,元素之间以逗号分割,并不要求元素的类型一定相等。
testList1 = [1,2,3,"i","am","CodeScrew"] #进行列表的定义
1.列表的常规操作
(1)取值:列表跟字符串一样,也可以通过索引取值或者切片取值
print(testList1[0]) #索引取值
print(testList1[0:3]) #切片取值,切片结果也是一个列表
print("1" in testList1) #判断元素”1“是否存在列表中
(2)修改:与字符串不同的是,列表是可以被修改的,其在内存的存储方式有点像C语言的链表,每个元素是不连续的,但是可以通过地址找到。可以通过索引修改或者切片修改
testList1[0] = 2 #索引修改
testList1[0:3] = [3,2,1] #切片修改
(3)与其他类型的互相转换:可迭代的类型才能转换成列表,数字是不能转换成列表的,字符串转换成列表也是不能直接使用str()来进行转换的
#字符串转换成列表
testStr1 = "abcdefghi"
v1 = list(testStr1)
print(v1) #输出结果为 ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] #数字转换列表失败,因为数字是不可迭代的类型,通俗点就是不能被for循环读取
# testInt1 = 123
# v2 = list(testInt1) #编译报错
# print(v2) #列表转换成字符串,直接使用str()失败
testList1= [1,2,3,"i","am","CodeScrew"]
v3 = str(testList1)
print(v3) #打印结果为 "[1, 2, 3, 'i', 'am', 'CodeScrew']" #列表转换成字符串,需要自己写for循环
v4 = ""
for item in testList1:
v4 += str(item)
print(v4) #列表转换成字符串,如果列表中的元素全是字符串,可以使用join方法
testList2 = ["i","am","CodeScrew"]
v5 = "".join(testList2)
print(v5)
2.列表的常用方法
- .append(新元素) #在列表的末尾添加新元素,元素可以是任意类型
testList1= [1,2,3,"i","am","CodeScrew"]
testList1.append("hello")
print(testList1)
# 打印结果为[1, 2, 3, 'i', 'am', 'CodeScrew', 'hello'] .extend(可迭代对象) #在列表的末尾添加新元素,与append不同的是其会把可迭代对象的元素拆分出来一个一个追加到列表末尾。append是将可迭代对象整体当作一个元素追加到末尾
testList1= [1,2,3,2,"i","am","CodeScrew"]
testList2 = [1,2,3]
testList1.append(testList2) #使用append进行元素追加
print(testList1)
# 打印结果为[1, 2, 3, 2, 'i', 'am', 'CodeScrew', [1, 2, 3]] testList1= [1,2,3,2,"i","am","CodeScrew"]
testList2 = [1,2,3]
testList1.extend(testList2) #使用extend进行元素追加
print(testList1)
#打印结果为[1, 2, 3, 2, 'i', 'am', 'CodeScrew', 1, 2, 3]- .insert(插入位置,要插入的值) #在列表的特定位置插入元素
testList1= [1,2,3,2,3,"i","am","CodeScrew"]
testList1.insert(0,"hello") #在列表的0索引处插入元素
print(testList1)
# 打印结果为['hello', 1, 2, 3, 2, 3, 'i', 'am', 'CodeScrew'] .clear() #清空列表的全部元素
testList1= [1,2,3,"i","am","CodeScrew"]
testList1.clear()
print(testList1)
# 打印结果为[]- .pop(指定索引(可选)) #删除某个元素的值,并将该值返回
testList1= [1,2,3,2,3,"i","am","CodeScrew"]
v1 = testList1.pop() #不加参数默认删除最后一个
print(testList1) #打印结果为[1, 2, 3, 2, 3, 'i', 'am']
print(v1) #打印结果为CodeScrew testList1= [1,2,3,2,3,"i","am","CodeScrew"]
v1 = testList1.pop(5) #删除索引值为5的元素“i”
print(testList1) #打印结果为[1, 2, 3, 2, 3, 'am', 'CodeScrew']
print(v1) #打印结果为i - .remove(指定值) #删除列表中值与指定值相同的元素,左边优先
testList1= [1,2,3,2,3,"i","am","CodeScrew"]
testList1.remove(2) #删除值为2的元素,左边优先
print(testList1) #打印结果为[1, 3, 2, 3, 'i', 'am', 'CodeScrew'] - del 列表[索引] #删除列表中对应索引的元素,可以是切片
.copy() #列表的复制,这个是浅拷贝
testList1= [1,2,3,"i","am","CodeScrew"]
v1 = testList1.copy() #将testList1的内容拷贝到v1中
print(v1)
# 打印结果为[[1, 2, 3, 'i', 'am', 'CodeScrew']]- .count(输入值) #查找列表中元素与输入值相同的个数
testList1= [1,2,3,2,"i","am","CodeScrew"]
v1 = testList1.count(2) #查询列表中值为2的元素个数
print(v1)
# 打印结果为2 - .index(要查找的元素,起始位置,结束位置) #查询元素的索引,从前往后找,返回第一个找到的元素的索引
testList1= [1,2,3,2,3,"i","am","CodeScrew"]
v1 = testList1.index(3) #查询值为3的元素的索引
print(v1)
# 打印结果为2 - .reverse() #将列表的元素进行反转
testList1= [1,2,3,2,3,"i","am","CodeScrew"]
testList1.reverse() #进行列表的元素反转
print(testList1) #['CodeScrew', 'am', 'i', 3, 2, 3, 2, 1] - .sort(key = None,reverse=True|False) #将元素进行排序,默认从小到大排序,如果reverse = True,则为从大到到小排序,其中传参key在这里暂时不说
testList1= [1,4,3,2]
testList1.sort() #进行列表的元素从小到大排序
print(testList1) #打印为[1, 2, 3, 4]
testList1.sort(reverse = True) #进行列表的元素从大大小排序
print(testList1) #打印为[4, 3, 2, 1]
元组
元组和列表有点类似,但和列表的不同点在于:列表元素有序,并且可以被修改。元组元素不能被修改,也不能增加或者删减元素,
元组的定义如下,其特征是以括号()括起来,元素之间以逗号分割,并不要求元素的类型一定相等。
testTuple1 = (1,2,3,"i","am","CodeScrew",) #进行元组的定义,推荐定义元组的时候最后加一个逗号
元组的常规操作和列表几乎是一致的,也能够通过索引、切片来获取元素
这里有个注意点,元组的元素不能被修改指的是一级元素,二级及以上的元素是可以被修改的,如下面代码所示
testTuple1 = (1,2,[555,666],"hello")
#testTuple1[0] = 2
# 编译报错,一级元素不能被修改提示 'tuple' object does not support item assignment testTuple1[2][0] = 666
print(testTuple1)
#打印结果为(1, 2, [666, 666], 'hello')
#分析下过程,testTuple1[2],得到了一级元素列表,testTuple1[2][0]得到了二级元素555,二级元素可以被修改
元组中只有两个方法,与列表雷同,这里不加以赘述了
- count() #获取指定元素出现的次数
- index() #获取指定元素的第一个索引
字典
字典的元素是无序的,定义一个字典使用print打印每一次看到的都是不一样的
字典的元素叫键值对,key:value这种的形式,其中key只能为数字、字符串、元组、布尔值,value可以为任何类型的任意值。当key相同时只能保存一个key
字典的定义如下,其特征是以括号{}括起来,元素必须是键值对,元素之间以逗号分割,并不要求元素的类型一定相等。
testDict = {
"苹果" : "apple",
"香蕉" : "banana"
}
字典的元素取值跟列表和元组有些许不同,其索引为元素中的key,而且不支持切片,如
testDict = {
"苹果" : "apple",
"香蕉" : "banana"
}
v1 = testDict["苹果"] #通过key来取到value
print(v1)
对字典进行循环的时候默认是得到其所有的key,也是可以设置.keys()或者.items()来获取其他,如下面代码所示
testDict = {
"苹果" : "apple",
"香蕉" : "banana"
}
for item in testDict:
print(item) #打印结果为苹果 香蕉 #上面的循环和for item in testDict.keys() 效果是一样的 for item in testDict.values():
print(item) # 打印结果为apple banana for item in testDict.items():
print(item) # 打印结果为('苹果', 'apple') ('香蕉', 'banana') for k,v in testDict.items():
print(k,v) #打印结果为苹果 apple 香蕉 banana
1.字典的常用方法
由于很多方法和列表的意义几乎是完全一样的,这里就不一一贴代码进行验证了
- .clear() #删除所有元素
- .copy() #复制字典
- dict.fromkeys(key序列,value值) #通过传入key序列(列表、元组)来生成字典
a1 = dict.fromkeys(["k1","k2"],0)
print(a1) #打印结果为{'k1': 0, 'k2': 0} - .get(key值) #输入key值得到它所对应的值,如果不存在返回None,而直接索引取value的话,如果key不存在就会报错,如下面代码所示
testDict1 = {
"k1" : "v1",
"k2" : "v2"
}
#testDict1["k11"] 使用这种形式如果key不存在,就会报错
v1 = testDict1.get("k11") #使用这种形式如果key不存在,返回none
print(v1) - .pop(key) #删除某个元素的值,并获取。可以指定如果获取不到的时候返回的默认值
- .popitem() #随机删除一个键值对,并返回
- .setdefalut(键,值) #设置默认值,如果已经存在就不设置,返回值为设置的值或者已经存在的值
testDict1 = {
"k1" : "v1",
"k2" : "v2"
} v1 = testDict1.setdefault("k1","v11") #设置键k1的默认值为v11,注意此时k1是有值的
v3 = testDict1.setdefault("k3","v3") #设置键k3的默认值为v3,注意此时没有k3
print(testDict1) - .update(字典) #更新字典,如果字典有相应的键值对就覆盖,没有就创建,传参可以是一个字典,也是是key1 = value,key2 = value这种形式
testDict1 = {
"k1" : "v1",
"k2" : "v2"
} testDict1.update({"k1":"v11","k2":"v22"}) #传入字典
print(testDict1) #打印结果为{'k1': 'v11', 'k2': 'v22'}
testDict1.update(k5="v5") #传入键值对
print(testDict1) #打印结果为{'k1': 'v11', 'k2': 'v22', 'k5': 'v5'}
集合
集合相比于列表、元组、字典,它的特性是只能由不同元素组成、无序、集合中元素必须是不可变类型
字典的定义如下,其特征是以括号{}括起来,元素之间以逗号分割,并不要求元素的类型一定相等。注意下与字典的不同,字典的元素必须是键值对
testSet = {"hello","world","CodeScrew"} #使用常规的定义
#或者
#testSet = set(可迭代对象) #使用set函数定义 #testFrozenSet = frozenset(可迭代对象) #定义不可变集合
验证集合的三种特性:只能由不同元素组成、无序、集合中元素必须是不可变类型
testSet = {"hello","world","hello","CodeScrew"}
for item in testSet:
print(item)
#打印结果为
# hello
# CodeScrew
# world #testSet = {[1,2],"hello"} #列表为可变类型
#直接编译报错
1.集合的常用方法
- .add(添加的值) #往集合中添加元素
- .clear() #清空集合
- .copy #拷贝集合
- .pop() #随便删一个然后返回被删除的元素
- .remove(要删除的元素) #删除特定元素,如果该元素不存在就报错
- .distartd(要删除的元素) #删除特定元素,如果该元素不存在就忽略
- 集合1.intersection(集合2) #求两个集合的交集,或者可以使用集合1&集合2的方式,比如会打篮球的人为集合1,会踢足球的人为集合2,要求两个都会玩的人,就是用集合的交集
- 集合1.union(集合2) #求两个集合的并集,或者可以使用集合1|集合2的方式,比如会打篮球的人为集合1,会踢足球的人为集合2,要求只要会玩球的人,就是用集合的并集
- 集合1.diffrence(集合2) #求两个集合的差集,也可以使用集合1-集合2 的方式,比如集合1-集合2只剩下集合1所独有的部分,集合2-集合1只剩下集合2独有的部分
集合1.symmetric_difference(集合2) #求两个集合的交叉补集,也可以使用集合1^集合2 的方式,比如会打篮球的人为集合1,会踢足球的人为集合2,求出只会篮球或者只会足球的人
- 集合1.isdisjoint(集合2) #两个集合是否存在交集
- 集合1.issubset(集合2) #集合1是否为集合2的子集
- 集合1.issuperset(集合2) #集合1是否为集合2的父集
- 集合1.update(集合2) #用于来更新多个值集合1和集合2求并集并且赋值给集合1
下篇:python的基本数据类型以及对应的常用方法(列表、元组、字典、集合)的更多相关文章
- Day 07 数据类型的内置方法[列表,元组,字典,集合]
数据类型的内置方法 一:列表类型[list] 1.用途:多个爱好,多个名字,多个装备等等 2.定义:[]内以逗号分隔多个元素,可以是任意类型的值 3.存在一个值/多个值:多个值 4.有序or无序:有序 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)
列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...
- python 列表 元组 字典 集合
列表 lst = [i for i in range(10)] 切片 # 把下标小于2的显示出来 print(lst[:2]) # 把10个数有大到小输出 print(lst[::-1]) # 把下标 ...
- python 中列表 元组 字典 集合的区别
先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...
- Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
代码 bol = True # 布尔 num = 100000000; # 数字 str = "fangbei"; # 字符串 str_cn = u"你好,方倍" ...
- Python 列表&元组&字典&集合
列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...
- Python列表,元组,字典,集合详细操作
菜鸟学Python第五天 数据类型常用操作及内置方法 列表(list) ======================================基本使用====================== ...
随机推荐
- 从零开始:一个正式的vue+webpack项目的目录结构是怎么形成的
如何从零开始一个vue+webpack前端工程工作流的搭建,首先我们先从项目的目录结构入手.一个持续可发展,不断加入新功能,方便后期维护的目录结构究竟是长什么样子的?接下来闰土大叔带你们一起手摸手学起 ...
- @Select注解的情况下,重载的报错
在编写代码的时候,我对查询这个方法进行了重载,这样调用的时候会根据参数的不同,进而去执行不同的操作,但是......问题来了.想法都是美好的,实际情况却不是我理想的状态.运行代码的时候他动了几下,然后 ...
- Hive函数:LAG,LEAD,FIRST_VALUE,LAST_VALUE
参考自大数据田地:http://lxw1234.com/archives/2015/04/190.htm 测试数据准备: create external table test_data ( cooki ...
- Java-NIO(一):简介
Java NIO简介: Java New IO Non Blocking IO,从java1.4版本就开始引入了新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和 ...
- 解决MySQL在修改列时因为外键依赖出错的问题
因为 favorite_food 中的 person_id 对 person 表中的 person_id 有外键依赖关系,所以在执行 ALTER TABLE person MODIFY person_ ...
- Java面试题2--数据类型
1. Java的数据类型? 2. Java的封装类型? 3. 基本类型和封装类型的区别? 基本类型只能按值传递,而对应的封装类是按引用传递的. 基本类型是在堆栈上创建的,而所有的对象类型都是在堆上创建 ...
- Struts2笔记分享(一)
Struts2概述1.简介Struts就是在Model2的基础上实现的一个MVC框架,它只有一个中心控制器,采用XML定制的转向的URL,采用Action来处理逻辑.2.Struts2的MVC模式MV ...
- [LeetCode] Add Bold Tag in String 字符串中增添加粗标签
Given a string s and a list of strings dict, you need to add a closed pair of bold tag <b> and ...
- “百度杯”CTF比赛 2017 二月场_onthink
题目在i春秋ctf训练营中能找到,这题直接拿大佬的wp来充数 百度找到onethinnk的一个漏洞. 参考:http://www.hackdig.com/06/hack-36510.htm 就是注册个 ...
- [SDOI 2010]魔法猪学院
Description 题库链接 给出一张 \(n\) 个点 \(m\) 条边有向图,询问最多有多少条不同的路径从 \(1\) 到 \(n\) 并且路径长度和 \(\leq E\) . \(2\leq ...