python 复杂类型
list列表
列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。
同一列表中只放入同一类型的数据,这样可以提高程序的可读性。
创建列表
使用[ ]
创建列表后,一般使用=
将它赋值给某个变量。
1 | num = [1, 2, 3, 4, 5, 6, 7] |
内置的函数 list(),使用它可以将其它数据类型转换为列表类型。
1 | # 将字符串转换成列表 |
遍历列表
使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。
1 | listname[start : end : step] |
删除列表
对于已经创建的列表,如果不再使用,可以使用del
关键字将其删除。
1 | del listname |
添加元素
列表可以使用+
进行连接,相当于在第一个列表的末尾添加了另一个列表。
使用+
会生成一个新的列表,原有的列表不会被改变。
append() 方法
用于在列表的末尾追加元素。
1 | l = ['Python', 'C++', 'Java'] |
extend()方法
把包含的元素逐个添加到列表中。
1 | # 追加列表,列表也被拆分成多个元素 |
insert()方法
在列表中间某个位置插入元素。
1 | l = ['Python', 'C++', 'Java'] |
删除元素
del
根据索引值删除元素。
1 | lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"] |
pop()方法
pop() 方法用来删除列表中指定索引处的元素。默认会删除列表中的最后一个元素。
1 | nums = [40, 36, 89, 2, 36, 100, 7] |
remove()方法
根据元素本身的值来进行删除操作。
删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。
1 | nums = [40, 36, 89, 2, 36, 100, 7] |
clear()
删除列表的所有元素,也即清空列表。
1 | url = list("http://c.biancheng.net/python/") |
修改元素
直接对元素赋值
1 | nums[2] = -26 #使用正数索引 |
通过切片语法给一组元素赋值。既可以为列表添加元素,也可以为列表删除元素。
1 | nums = [40, 36, 89, 2, 36, 100, 7] |
查找元素
index() 方法
用来查找某个元素在列表中出现的位置。
1 | listname.index(obj, start, end) |
count()方法
统计某个元素在列表中出现的次数。count() 返回 0,就表示列表中不存在该元素。
1 | nums = [40, 36, 89, 2, 36, 100, 7, -20.5, 36] |
tuple元组
元组和列表(list)的不同之处在于:
- 列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;
- 而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。
元组的所有元素都放在一对小括号( )
中,相邻元素之间用逗号,
分隔。元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同。
1 | ("c.biancheng.net", 1, [2,'a'], ("abc",3.0)) |
- 元组作为很多内置函数和序列类型方法的返回值存在,使用某些函数或者方法时,它的返回值是元组类型。
- 元组比列表的访问和处理速度更快,对指定元素进行访问,且不涉及修改元素的操作时,使用元组。
- 元组可以在映射(和集合的成员)中当做“键”使用,而列表不行。
创建元祖
通过( )
创建元组后,一般使用=
将它赋值给某个变量。
1 | num = (7, 14, 21, 28, 35) |
tuple(),用来将其它数据类型转换为元组类型。
1 | #将字符串转换成元组 |
访问元素
使用索引访问元组元素,使用切片访问元组元素。
1 | #使用索引访问元组中的某个元素 |
修改元组
只能创建一个新的元组去替代旧的元组。
1 | tup = (100, 0.5, -36, 73) |
删除元组
通过 del 关键字将其删除。
1 | tup = ('Java教程',"http://c.biancheng.net/java/") |
dict字典
字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。
字典中的键必须唯一,必须不可变,只能使用数字、字符串或者元组,不能使用列表。
创建字典
使用 { } 创建字典。
1 | #使用字符串作为key |
fromkeys() 方法创建字典。带有默认值的字典。
1 | knowledge = ['语文', '数学', '英语'] |
dict() 映射函数创建字典。应用 dict() 函数和 zip() 函数,可将两个列表转换为对应的字典。
1 | keys = ['one', 'two', 'three'] |
访问字典
通过键访问值。键必须是存在的,否则会抛出异常。
1 | dictname[key] |
get() 方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。
1 | dictname.get(key[,default]) |
当键不存在时,get() 返回空值 None,明确地提示该键不存在,设置 get() 的第二个参数。
1 | a = dict(two=0.65, one=88, three=100, four=-59) |
删除字典
使用 del 关键字。
1 | a = dict(two=0.65, one=88, three=100, four=-59) |
判断字典中是否存在指定键值对
可以使用 in 或 not in 运算符。in 或 not in 运算符都是基于 key 来判断的。
1 | a = {'数学': 95, '语文': 89, '英语': 90} |
keys()、values() 和 items() 方法
获取字典中的特定数据:
- keys() 方法用于返回字典中的所有键(key);
- values() 方法用于返回字典中所有键对应的值(value);
- items() 用于返回字典中所有的键值对(key-value)。
keys()、values() 和 items() 返回值的类型分别为 dict_keys、dict_values 和 dict_items。
- list() 函数,将它们返回的数据转换成列表。
- 使用 for in 循环遍历它们的返回值。
1 | a = {'数学': 95, '语文': 89, '英语': 90} |
copy() 方法
返回一个字典的拷贝,返回一个具有相同键值对的新字典。
copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。对最表层的键值对进行深拷贝,对于某些列表类型的值来说,此方法对其做的是浅拷贝。
1 | a = {'one': 1, 'two': 2, 'three': [1,2,3]} |
set集合
用来保存不重复的元素,即集合中的元素都是唯一的。集合会将所有元素放在一对大括号 {} 。
同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型。set 集合是无序的,所以每次输出时元素的排序顺序可能都不相同。
创建集合
使用 {} 创建。
1 | a = {1,'c',1,(1,2,3),'c'} |
set()函数创建集合。
1 | set1 = set("c.biancheng.net") |
空集合,只能使用 set() 函数实现。因为直接使用一对 {},Python 解释器会将其视为一个空字典。
访问元素
使用循环结构,将集合中的数据逐一读取出来。
1 | a = {1,'c',1,(1,2,3),'c'} |
删除set集合
使用 del() 语句。