转载请注明出处:http://www.jianshu.com/p/aa578a7e2fbe
本文出自Shawpoo的简书
我的博客:CSDN博客
【Python学习笔记专栏】:http://blog.csdn.net/column/details/17658.html
除了上篇文章介绍的几种数据类型之外,Python还提供了几种内置的数据类型,有列表(list)、元组(tuple)、字典(dictionary)和集合(set)。
一、列表(list)和元组(tuple)
1、list(列表)
列表(list)是Python中最基本的数据结构。list是有序的集合,可以存放不同数据类型的数据,并且list中的每个元素的都对应着一个索引来标记其位置,且索引从0开始。
-
list的创建
创建一个list,只要把逗号分隔的不同的数据项使用方括号括起来即可。list1 = ["Python", "Android", "Java", "C++"] list2 = ["Git", "SVN", 2017, 2018] list3 = [1, 2, 3, 4, 6 ]
-
访问list中的元素
使用索引来访问列表中的值,索引从0开始,索引的最大值为list的长度-1。>>> list1[0] # 访问list1列表中的第一个元素 'Python' >>> list2[2] #访问list2列表中的第三个元素 2017
我们可以通过
len()
函数来查看列表的长度,如:>>> len(list1) 4 >>> len(list3) 5
访问列表中最后一个元素,则索引为(列表的长度-1),倒数第二个的索引为(列表的长度-2),以此类推。 还有一种访问方式是,索引从-1开始,-2,-3...如:
>>> list3[len(list3) - 1] 6 >>> list1[len(list1) - 1] 'C++' >>> list1[-1] 'C++'
还有一种访问方式是
索引:
的形式,表示访问该索引(含)之后的所有元素,例如:>>> list1[1:] ['Android', 'Java', 'C++']
-
list增加元素
list是一个可变的有序的,所以,可以往list中追加元素到末尾:
>>> list1.append("JavaScript") >>> list1 ['Python', 'Android', 'Java', 'C++', 'JavaScript']
也可以添加元素到指定位置,比如索引为1的位置:
>>> list1.insert(1, "ios") >>> list1 ['Python', 'ios', 'Android', 'Java', 'C++', 'JavaScript']
-
list修改元素
list中的元素也可以进行修改,通过索引直接进行替换:>>> list1[1] = 'Ruby' >>> list1 ['Python', 'Ruby', 'Android', 'Java', 'C++', 'JavaScript']
-
list删除元素
list中的元素也可以删除,删除list中最后一个元素:>>> list1.pop() 'JavaScript' >>> list1 ['Python', 'Ruby', 'Android', 'Java', 'C++']
通过索引进行删除:
>>> list1.pop(1) 'Ruby' >>> list1 ['Python', 'Android', 'Java', 'C++']
根据内容进行删除:
>>> list1.remove('C++') >>> list1 ['Python', 'Android', 'Java']
通过关键字
def
进行删除:>>> del list1[1] >>> list1 ['Python', 'Java']
-
list的嵌套
list的嵌套,即list中的元素也是一个list:>>> a = [1, 2, 3] >>> b = ['a', 'b', 'c'] >>> x = [a, b] >>> len(x) 2 >>> len(x[0]) 3 >>> x[0] [1, 2, 3] >>> x[1][0] 'a'
-
list运算符
list对+
和*
的操作符与字符串相似。+
号用于组合列表,*
号用于重复列表。Python表达式 结果 描述 len([1, 2, 3]) 3 list的长度 [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合 ['Hi~'] * 4 ['Hi~', 'Hi~', 'Hi~', 'Hi~'] 重复 3 in [1, 2, 3] True 元素是否存在于list中 for x in [1, 2, 3]: print(x, end=" ") 1 2 3 遍历list中的元素
2、tuple(元组)
Python的tuple与list类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号,list使用方括号。
-
tuple的创建
tuple创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
创建空的tuple,直接写小看括号即可:tuple1 = ("Python", "Android", "Java", "C++") tuple2 = (1, 2, 3, 4, 6 )
创建只有一个元素的tuple,需要在元素后面添加逗号,否则括号会被tuple3 = ()
当作运算符使用,我们可以通过type()函数
来查看类型:>>> t1 = (1) >>> type(t1) <class 'int'> # 整数类型 >>> t2 = (1,) >>> type(t2) <class 'tuple'> # tuple类型
-
tuple的修改
tuple与list的最大区别就是tuple内的元素不允许修改:
但是我们可以对tuple进行连接组合:>>> t1[0] = 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
tuple中的元素为可变的数据类型,从而使tuple“可变”:>>> t1 = (1, 2, 3) >>> t2 =('a', 'b', 'c') >>> t3 = t1 + t2 >>> t3 (1, 2, 3, 'a', 'b', 'c')
>>> t = (1, 2, ['a', 'b']) >>> l = ['a', 'b'] >>> t = (1, 2, l) >>> t (1, 2, ['a', 'b']) >>> l[0] = 'python' # 修改tuple中列表l的值 >>> t (1, 2, ['python', 'b'])
-
tuple的删除
既然tuple是不可修改的,那么tuple中的元素也是不可删除的,但是我们可以通过del关键字
将tuple直接删除掉:>>> t = (1, 2, 3) >>> t (1, 2, 3) >>> del t >>> t Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 't' is not defined
-
tuple的索引操作和运算符
tuple的索引操作和运算符与list完全一样。
补充:tuple(list)函数
:将list转换为tuple,list(tuple)函数
:将tuple转换为list:# list转tuple: >>> l = [1, 2, 3] >>> tuple(l) (1, 2, 3) # tuple转list: >>> t = ('a', 'b', 'c') >>> list(t) ['a', 'b', 'c']
二、字典(dictionary)和集合(set)
1、dict(字典)
字典是另一种可变的容器模型,且可存储任意类型对象。字典的每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 ,格式如下所示:
格式:d = {key1 : value1, key2 : value2 }
例子:d = {1:"a", 2:"b", 3:"c"}
-
字典的特点
1、键必须是唯一的,不会重复,但值则不必。
2、值可以取任何数据类型,如字符串,数字或元组,但不能为列表,但键必须是不可变的。 -
访问字典的元素
通过字典的key进行取值:>>> d = {"id": 2, "name":"Tom", "age": 18} >>> d["name"] 'Tom'
如果key不存在就会报错,我们在访问之前进行判断是否存在这个key:
>>> 'id' in d True >>> 'sex' in d False
通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('sex') >>> d.get('sex', -1) -1
ps:返回None的时候Python的交互式命令行不显示结果。
>>> d.items() # 打印所有键值对数据 dict_items([('id', 2), ('name', 'Tom'), ('age', 20)]) >>> d.keys() #打印dict的所有key dict_keys(['id', 'name', 'age'])
-
修改字典的元素
通过键取值,然后进行赋值:>>> d["age"] = 20 >>> d {'id': 2, 'name': 'Tom', 'age': 20}
-
删除字典的元素
可以删除字典的key和整个字典:del dict['Name'] # 删除键 'Name' dict.clear() # 删除字典 del dict # 删除字典
-
dict和list的比较
dict的查找和插入的速度极快,不会随着key的增加而变慢。但是需要占用大量的内存,内存浪费多。相反,list查找和插入的时间随着元素的增加而增加。但是占用空间小,浪费内存很少。
2、set(集合)
set()函数是创建一个无序不重复元素集,可添加,删除数据,还可以计算交集、差集、并集等。
-
set的语法
class set([iterable]) 参数说明: iterable -- 可迭代对象对象; >>> s = set([1, 2, 3]) >>> s {1, 2, 3}
-
set的元素操作
添加数据,可以重复添加,但会被过滤掉:
删除数据:>>> s.add(4) >>> s {1, 2, 3, 4}
set的交集、差集、并集操作:>>> s.remove(2) >>> s {1, 3, 4}
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 # 交集 {2, 3} >>> s1 | s2 # 并集 {1, 2, 3, 4} >>> s1 - s2 # 差集 {1}
-
set的特点
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
网友评论