Python中常见的数据类型总结
Python提供多种数据类型来存放数据项集合,主要包括序列(列表list和元组tuple),映射(如字典dict),集合(set),下面对这几种一一介绍:
一 序列
1.列表list
列表是一种有序的集合,相对于元组和字符串的不同是它其中的元素可变,可以随时添加和删除其中的元素。
(1) 创建list
在命令行中测试,如下:

>>> L1 = [1,2,3]
>>> L1
[1, 2, 3]
>>> L2 = ['abc']
>>> L2
['abc']
>>> L3 = ["a","b","c"]
>>> L3
['a', 'b', 'c']

注意,字符串的一定要加引号。
通过list对字符串创建列表非常有效,比如:
>>> L = list("Python")
>>> L
['P', 'y', 't', 'h', 'o', 'n']
(2)访问list
根据索引来访问,注意不能越界,这一点跟数组特别像:
>>> L[0]
'P'
>>> L[-1]
'n'
(3)添加新元素
用append()方法,把新元素追加到list的末尾;insert()可以将一个新元素添加到特定的位置。
(4) 删除元素
删除元素可以采用pop()方法,执行L.pop()删除list的最后一个元素,如果是特定位置的话可以采用pop(2),2表示的是位置。
(5)替换
替换很简单,直接索引就可以。
(6)打印

>>> L = ['a','b','c']
>>> for i in L:
print(i)
a
b
c

2. tuple
(1)创建
与list所不同的是,tuple一般采用()括起来,命令行中测试,如下:

T= 1,2,3
>>> T
(1, 2, 3)
>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> T = "abc"
>>> T
'abc'

创建空元组:T = ()
定义一个元素的元组:
>>> T = (1)
>>> T
1
这样运行了结果是对的,看起来也没错,但是这种定义其实并不正确,这种定义的不是tupel,而是1这个数,这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以定义含一个元素的元组时必须加一个逗号,如下:
>>> T = (1,)
>>> T
(1,)
(2)访问
直接索引就好,如下:
>>> T =(1,2,3)
>>> T[1]
2
(3)更改
上述定义的tuple是不变的,但是我们可以在tuple中定义list对其进行修改:

>>> T = (1,2,['a','b'])
>>> T[2][0]
'a'
>>> T[2][0] = 'c'
>>> T
(1, 2, ['c', 'b'])

在tuple中,虽然元素不可以修改,但是我们可以对其进行连接组合:
>>> T1 = [1,2,3]
>>> T2 = [4,5,6]
>>> T3 = T1 + T2
>>> T3
[1, 2, 3, 4, 5, 6]
3.字符串
(1)创建
>>> str = "Hello Python"
>>> str
'Hello Python'
(2)访问
>>> str[0] 'H'
(3)相加

>>>str = "hello "
>>>str = "Python"
>>> str3 = str1 + str2
>>> str3 'Hello Python'

4.通用的序列操作方法
(1)索引
在访问序列元素中用到,如下:

>>> L = ['a','b','c']
>>> L[1] 'b' >>> T = (1,2,3)
>>> T[0] 1 >>> str = "Python"
>>> str[4] 'o'

(2)分片
分片用来访问一定范围内的元素,分片通常通过冒号相隔的两个索引来实现,常见的有如下几种:

>>> a = list(range(10))
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = a[1:5]
>>> b [1, 2, 3, 4]
>>> c = a[-3:-1]
>>> c [7, 8]
>>> d = a[1:10:2]
>>> d [1, 3, 5, 7, 9]

二 映射(字典)
映射中的每个元素都有一个专业的名字,叫做键。字典是Python中唯一内建的映射类型,下来我们对其进行详细介绍:
(1)键类型
字典(dict)是一个存放无序的键值映射(key/value)类型数据的容器字典的键可以是数
字、字符串或者是元组,键必须唯一。在Python中,数字、字符串和元组都被设计成不可变类型,而常见的列表以及集合(set)都是可变的,所以列表和集合不能作为字典的键。键可以为任何不可变类型,这正是Python中的字典最强大的地方。
(2)创建

>>> d = {}
>>> d[1] = 1
>>> d
{1: 1}
>>> d['cat'] = 'Lucy'
>>> d
{1: 1, 'cat': 'Lucy'}

(3)查找
dict是通过key来查找value,表示的是意义对应的关系,可以通过d[key]的方式来访问dict:
>>> d['cat'] 'Lucy'
(4)遍历

>>> d = {}
>>> d['cat'] = 'Lucy'
>>> d['dog'] = 'Ben'
>>> for key in d:
print(key + ":",d[key])

结果
cat: Lucy
dog: Ben
(5)优缺点
dict的第一个特点是查找速度快,而且查找的速度与元素的个数无关,而list的查找速度是随着元素的增加而逐渐下降的;第二个特点是存储的key-value序对是没有顺序的;第三个特点是作为key得到元素是不可变的,所以list不能作为key。
dict的缺点是占用内存大,还会浪费很多内容。
三 集合(set)
dict是建立了一系列的映射关系,而set是建立一系列无序的,不重复的元素。
(1)创建
创建set的方式是调用set()并传入一个list,list的元素将作为set的元素。
>>> S = set([1,2,3])
>>> S {1, 2, 3}
重复元素在Set中自动过滤,如:
>>> S = set([1,1,2,3,4,5,4])
>>> S {1, 2, 3, 4, 5}
(2)添加
add()添加,有重复元素可以添加,但不会有效果:

>>> S.add(4)
>>> S {1, 2, 3, 4, 5} >>> S.add(9)
>>> S {1, 2, 3, 4, 5, 9}

(3)删除
>>> S.remove(9)
>>> S {1, 2, 3, 4, 5}
(4)交集,并集
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集:

>>> S1 = set([1,2])
>>> S2 = set([2,3])
>>> S1&S2 {2}
>>> S1|S2 {1, 2, 3}

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”
四 list,tuple,dict和set的主要区别
1 .list
list是一个使用方括号括起来的有序元素集合;
List 可以作为以 0 下标开始的数组,任何一个非空 list 的第一个元素总是 L[0],负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 L[-1];
有分片功能,两个list可以相加;
append 向 list 的末尾追加单个元素;
insert 将单个元素插入到 list 中;
extend 用来连接 list,使用一个 list 参数进行调用;
append 接受一个参数, 这个参数可以是任何数据类型, 并且简单地追加到 list 的尾部;
index 在 list 中查找一个值的首次出现并返回索引值;
要测试一个值是否在 list 内, 使用 in, 如果值存在, 它返回 True, 否则返为 False ;
remove 从 list 中删除一个值的首次出现;
pop 可以删除 list 的最后一个元素, 然后返回删除元素的值,用索引删除制定位置的值;
2.tuple
tuple是不可变的list,创建了一个tuple就不能以任何方式改变它;
定义tuple是将整个元素集是用小括号括起来,是有序集合;
tuple的索引与list一样从0开始,所以一个非空的tuple的第一个元素总是t[0];
负数索引与 list 一样从 tuple 的尾部开始计数;
与 list 一样分片 (slice) 也可以使用。分割一个 tuple 时, 会得到一个新的 tuple;
没有 append、extend、remove或pop方法以及index方法;
可以使用in来查看一个元素是否存在于tuple 中。
3.dict
dict定义了键和值之间的一一对应关系,每个元素都是一个key-value对;
整个元素集合用大括号括起来,有序集合;
可以通过 key 得到value, 但不能通过vaule获取 key;
在一个 dict中不能有重复的 key, 并且 key 是大小写敏感的;
键可以是数字、字符串或者是元组等不可变类型;
用del使用key可以删除dict中的独立元素;
用clear可以清除dict中的所有元素。
4.set
set是建立一系列无序的,不重复的元素;
创建set的方式是调用set()并传入一个list,list的元素将作为set的元素;
set和dict的唯一区别仅在于没有存储对应的value。
Python中常见的数据类型总结的更多相关文章
- python中常见的数据类型
str 常用方法 1. 索引(下标) s = 'ABCDEFGHIJKLMN's1 = s[0]print('s[0] = ' + s1) #s[0] = A 2. 切片:顾头不顾尾 s = 'A ...
- python中的常用数据类型
python中的常用数据类型 以下是个人总结的python中常见的数据类型,话不多说,我们直接步入正题: 数字类型 整型类:int类可以表示任意大小的整数值,在python中没有像JAVA或者C那样的 ...
- python中常见的报错信息
python中常见的报错信息 在运行程序时常会遇到报错提示,报错的信息会提示是哪个方向错的,从而帮助你定位问题: 搜集了一些python最重要的内建异常类名: AttributeError:属性错误, ...
- Python中常见字符串去除空格的方法总结
Python中常见字符串去除空格的方法总结 1:strip()方法,去除字符串开头或者结尾的空格>>> a = " a b c ">>> a.s ...
- python中不可变数据类型和可变数据类型
在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址 ...
- python中的特殊数据类型
一.python中的特殊数据类型 对于python,一切事物都是对象,对象基于类创建.像是“wangming”,38,[11,12,22]均可以视为对象,并且是根据不同的类生成的对象. 参照:http ...
- Python中的基本数据类型之列表与元组初步了解
一.什么是列表 1.列表是Python中的基本数据类型之一用[]来表示,每一项元素由逗号隔开,列表什么都能装,(能装对象的对象) 2.可以用来存放大量数据 3.是一个可以改变的数据类型 二.列表的索引 ...
- 1. Python中的基本数据类型、运算、变量
本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本数据类型.运算.变量 1. 基本数据类型 1.1 整数 py可以处理任意大小的整数,例如123,1234567891324 ...
- Python中常见的异常总结
Python中常见的异常总结 当Python检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常. 一.异常错误 a.语法错误 错误一: if ...
随机推荐
- codefroce385E矩阵快速幂
状态变化 (x,y,dx,dy,i) 表示i时刻熊站在(x,y)处速度向量(dx,dy)下一个状态是 ( 2x+y+dx+i , x+2y+dy+i , x+y+dx , x+y+dy , i+1 ...
- 剑指 offer面试题20 顺时针打印矩阵
[题目描述] 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...
- HDU 2553 状态压缩
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Spring Boot 整合Swagger2构建API文档
1.pom.xml中引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>spri ...
- ENUMSTXT.H中的指针数组
/************************************************************************ ...
- SPOJ COMPANYS Two Famous Companies 最小生成树,二分,思路 难度:2
http://www.spoj.com/problems/COMPANYS/en/ 题目要求恰好有k条0类边的最小生成树 每次给0类边的权值加或减某个值delta,直到最小生成树上恰好有k条边为0,此 ...
- 修改Intelij IDEA的maven依据下载为国内镜像(阿里)
1.win7环境,默认情况下在用户目录的.m2下自己新建setting文件.QQ群交流:697028234 .m2\settings.xml 2.settings.xml文件内容为: <sett ...
- 在centos7下安装java8和mysql
一般学习java和部署项目都是在本地部署,但是生产环境一般都是在linux环境下,部署和安装环境都是在控制台下进行操作的,没有windows的可视化的操作界面,对与linux的命令掌握和操作对小白来说 ...
- java基础第9天
抽象 abstract 抽象类和抽象方法必须用abstract关键字修饰 抽象类格式 abstract class 类名{} 抽象方法定义,在返回值钱,或修饰符前加上abstract关键字 方法没有方 ...
- 使用file_get_contents提交http post
以前使用curl获取需要登陆内容的文章,但其实,自5.0开始,使用file_get_contents就可以完成.(前提是开启了allow_url_fopen),下面以一个简单的例子说明一下:1.先看一 ...