Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

My Blog

从此烟雨落金城,一人撑伞两人行。

python 复杂类型

list列表

列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。

同一列表中只放入同一类型的数据,这样可以提高程序的可读性。

创建列表

使用[ ]创建列表后,一般使用=将它赋值给某个变量。

1
2
num = [1, 2, 3, 4, 5, 6, 7]
emptylist = [ ] # 空列表

内置的函数 list(),使用它可以将其它数据类型转换为列表类型。

1
2
3
4
5
6
7
8
9
# 将字符串转换成列表
list1 = list("hello")
print(list1)
#将区间转换成列表
range1 = range(1, 6)
list4 = list(range1)
print(list4)
#创建空列表
print(list())

遍历列表

使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。

1
2
listname[start : end : step]
# listname 表示列表名字,start 表示起始索引,end 表示结束索引,step 表示步长。

删除列表

对于已经创建的列表,如果不再使用,可以使用del关键字将其删除。

1
del listname

添加元素

列表可以使用+进行连接,相当于在第一个列表的末尾添加了另一个列表。

使用+会生成一个新的列表,原有的列表不会被改变。

append() 方法

用于在列表的末尾追加元素。

1
2
3
4
5
6
l = ['Python', 'C++', 'Java']
# 追加元素
l.append('PHP')
print(l)
# 追加列表,整个列表也被当成一个元素
l.append(['Ruby', 'SQL'])
extend()方法

把包含的元素逐个添加到列表中。

1
2
3
# 追加列表,列表也被拆分成多个元素
l.extend(['Ruby', 'SQL'])
print(l)
insert()方法

在列表中间某个位置插入元素。

1
2
3
l = ['Python', 'C++', 'Java']
#插入元素
l.insert(1, 'C')

删除元素

del

根据索引值删除元素。

1
2
3
lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"]
#使用正数索引
del lang[2]
pop()方法

pop() 方法用来删除列表中指定索引处的元素。默认会删除列表中的最后一个元素。

1
2
nums = [40, 36, 89, 2, 36, 100, 7]
nums.pop(3)
remove()方法

根据元素本身的值来进行删除操作。

删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。

1
2
3
4
nums = [40, 36, 89, 2, 36, 100, 7]
#第一次删除36
nums.remove(36)
print(nums)
clear()

删除列表的所有元素,也即清空列表。

1
2
url = list("http://c.biancheng.net/python/")
url.clear()

修改元素

直接对元素赋值

1
nums[2] = -26  #使用正数索引

通过切片语法给一组元素赋值。既可以为列表添加元素,也可以为列表删除元素。

1
2
3
nums = [40, 36, 89, 2, 36, 100, 7]
#修改第 1~4 个元素的值(不包括第4个元素)
nums[1: 4] = [45.25, -77, -52.5]

查找元素

index() 方法

用来查找某个元素在列表中出现的位置。

1
2
3
4
5
listname.index(obj, start, end)

nums = [40, 36, 89, 2, 36, 100, 7, -20.5, -999]
#检索列表中的所有元素
print( nums.index(2) )
count()方法

统计某个元素在列表中出现的次数。count() 返回 0,就表示列表中不存在该元素。

1
2
3
nums = [40, 36, 89, 2, 36, 100, 7, -20.5, 36]
#统计元素出现的次数
print("36出现了%d次" % nums.count(36))

tuple元组

元组和列表(list)的不同之处在于:

  • 列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;
  • 而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。

元组的所有元素都放在一对小括号( )中,相邻元素之间用逗号,分隔。元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同。

1
("c.biancheng.net", 1, [2,'a'], ("abc",3.0))
  1. 元组作为很多内置函数和序列类型方法的返回值存在,使用某些函数或者方法时,它的返回值是元组类型。
  2. 元组比列表的访问和处理速度更快,对指定元素进行访问,且不涉及修改元素的操作时,使用元组。
  3. 元组可以在映射(和集合的成员)中当做“键”使用,而列表不行。

创建元祖

通过( )创建元组后,一般使用=将它赋值给某个变量。

1
num = (7, 14, 21, 28, 35)

tuple(),用来将其它数据类型转换为元组类型。

1
2
3
#将字符串转换成元组
tup1 = tuple("hello")
print(tup1)

访问元素

使用索引访问元组元素,使用切片访问元组元素。

1
2
3
4
5
#使用索引访问元组中的某个元素
print(url[3]) #使用正数索引

#使用切片访问元组中的一组元素
print(url[9: 18]) #使用正数切片

修改元组

只能创建一个新的元组去替代旧的元组。

1
2
3
4
tup = (100, 0.5, -36, 73)
print(tup)
#对元组进行重新赋值
tup = ('Shell脚本',"http://c.biancheng.net/shell/")

删除元组

通过 del 关键字将其删除。

1
2
3
tup = ('Java教程',"http://c.biancheng.net/java/")
print(tup)
del tup

dict字典

字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。

字典中的键必须唯一,必须不可变,只能使用数字、字符串或者元组,不能使用列表。

创建字典

使用 { } 创建字典。

1
2
3
4
5
#使用字符串作为key
scores = {'数学': 95, '英语': 92, '语文': 84}

#使用元组和数字作为key
dict1 = {(20, 30): 'great', 30: [1,2,3]}

fromkeys() 方法创建字典。带有默认值的字典。

1
2
knowledge = ['语文', '数学', '英语']
scores = dict.fromkeys(knowledge, 60)

dict() 映射函数创建字典。应用 dict() 函数和 zip() 函数,可将两个列表转换为对应的字典。

1
2
3
4
5
6
keys = ['one', 'two', 'three'] 
values = [1, 2, 3]
a = dict( zip(keys, values) )

# 创建空的字典
d = dict()

访问字典

通过键访问值。键必须是存在的,否则会抛出异常。

1
dictname[key]

get() 方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。

1
dictname.get(key[,default])

当键不存在时,get() 返回空值 None,明确地提示该键不存在,设置 get() 的第二个参数。

1
2
a = dict(two=0.65, one=88, three=100, four=-59)
print( a.get('five', '该键不存在') )

删除字典

使用 del 关键字。

1
2
3
a = dict(two=0.65, one=88, three=100, four=-59)
print(a)
del a

判断字典中是否存在指定键值对

可以使用 in 或 not in 运算符。in 或 not in 运算符都是基于 key 来判断的。

1
2
3
4
5
a = {'数学': 95, '语文': 89, '英语': 90}
# 判断 a 中是否包含名为'数学'的key
print('数学' in a) # True
# 判断 a 是否包含名为'物理'的key
print('物理' in a) # False

keys()、values() 和 items() 方法

获取字典中的特定数据:

  • keys() 方法用于返回字典中的所有键(key);
  • values() 方法用于返回字典中所有键对应的值(value);
  • items() 用于返回字典中所有的键值对(key-value)。

keys()、values() 和 items() 返回值的类型分别为 dict_keys、dict_values 和 dict_items。

  1. list() 函数,将它们返回的数据转换成列表。
  2. 使用 for in 循环遍历它们的返回值。
1
2
3
4
5
6
7
8
a = {'数学': 95, '语文': 89, '英语': 90}
b = list(a.keys())

for k in a.keys():
print(k,end=' ')

for k,v in a.items():
print("key:",k," value:",v)

copy() 方法

返回一个字典的拷贝,返回一个具有相同键值对的新字典。

copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。对最表层的键值对进行深拷贝,对于某些列表类型的值来说,此方法对其做的是浅拷贝。

1
2
3
a = {'one': 1, 'two': 2, 'three': [1,2,3]}
b = a.copy()
print(b)

set集合

用来保存不重复的元素,即集合中的元素都是唯一的。集合会将所有元素放在一对大括号 {} 。

同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型。set 集合是无序的,所以每次输出时元素的排序顺序可能都不相同。

创建集合

使用 {} 创建。

1
2
a = {1,'c',1,(1,2,3),'c'}
print(a)

set()函数创建集合。

1
2
3
set1 = set("c.biancheng.net")
set2 = set([1,2,3,4,5])
set3 = set((1,2,3,4,5))

空集合,只能使用 set() 函数实现。因为直接使用一对 {},Python 解释器会将其视为一个空字典。

访问元素

使用循环结构,将集合中的数据逐一读取出来。

1
2
3
a = {1,'c',1,(1,2,3),'c'}
for ele in a:
print(ele,end=' ')

删除set集合

使用 del() 语句。

评论