Python列表
列表是最常用的Python数据类型,类似于Java或者C/C++语言中的数组,不过因为Python是弱类型的语言,所以数组中的元素可以类型不相同,甚至可以为对象。
Python列表创建
Python中可以使用[]
创建列表,如下:
list1 = ['baidu', 'alibaba', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
Python列表访问,截取
Python中的列表,可以通过索引来进行访问。第一个元素的索引为0。
list = ['a', 'b', 'b', 'd']
print(list[0]); # 访问第一个元素,输出:a
Python提供了丰富的访问表达式操作,如下:
list[2]
: 返回list列表的第3个元素list[-2]
: 返回list列表的倒数第2个元素list[1:]
: 返回list列表第2个元素之后的所有元素,相当于列表截取list[:-3]
: 返回list列表从第1个元素到倒数第3个元素之间的所有元素,不包括倒数第3个元素list[:]
: 放回list列表的所有元素
看下面的例子:
list = ['a', 'b', 'c', 'd', 'e', 'f']
print(list[2]) # c
print(list[-2]) # e
print(list[1:]) # ['b', 'c', 'd', 'e', 'f']
print(list[:-3]) # ['a', 'b', 'c']
print(list[:]) # ['a', 'b', 'c', 'd', 'e', 'f']
Python列表更新列表元素
可以通过索引修改列表元素,也可以使用append()
方法来为列表添加新元素。
list = ['baidu', 'alibaba', 1997, 2001]
print(list[2]) # 1997
# 使用下标修改元素
list[2] = 2000;
print(list[2]) # 2000
# 使用 append() 方法添加元素
list.append(2018)
print(list) # ['baidu', 'alibaba', 2000, 2001, 2018]
Python列表删除列表元素
可以使用del
语句删除列表元素。
list = ['baidu', 'alibaba', 1997, 2001]
print(list) # ['baidu', 'alibaba', 1997, 2001]
del list[-1] # 删除最后一个元素
print(list) # ['baidu', 'alibaba', 1997]
这里需要注意的是,del
只是删除变量,并不会删除数据。它不同于C++中的delete
,并不会释放掉数据的内存空间。
Python列表操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
Python表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 返回列表元素个数 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合列表元素 |
[‘a’] * 4 | [‘a’, ‘a’, ‘a’, ‘a’] | 重复元素 |
3 in [1, 2, 3] | True | 检测元素是否存在于列表中 |
Python嵌套列表
因为列表的元素类型没有限制,当一个列表的元素是列表时,可以实现嵌套列表。
a = ['a', 'b', 'c']
b = [1, 2]
c = [a, b]
print(c) # [['a', 'b', 'c'], [1, 2]]
Python列表函数
Python提供了一些内置函数用来处理列表,如下:
函数名 | 描述 |
---|---|
len(list) |
返回列表元素个数 |
max(list) |
返回列表元素最大值 |
min(list) |
返回列表元素最小值 |
list(seq) |
将元组转换为列表 |
Python列表方法
列表本身为Python的内置对象,该对象包含下面常用方法:
方法名 | 描述 |
---|---|
list.append(obj) |
在列表末尾添加新的对象 |
list.count(obj) |
统计某个元素在列表中出现的次数 |
list.extend(seq) |
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) |
从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) |
将对象插入列表 |
list.pop(obj=list[-1]) |
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) |
移除列表中某个值的第一个匹配项 |
list.reverse() |
反向列表中元素 |
list.sort([func]) |
对原列表进行排序,func为排序回调函数 |
list.clear() |
清空列表 |
list.copy() |
复制列表,并返回新列表副本 |
需要注意list.copy()函数和=
赋值的区别,list.copy()为拷贝赋值,而=
为引用赋值
a = [1, 2]
b = a
c = a.copy()
del a[1]
# a=[1], b=[1], c=[1,2]
b.append(3)
# a=[2,3], b=[2,3], c=[1,2]
c.remove(2)
# a=[2,3], b=[2,3], c=[1]
Python元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
Python元组创建
区别于列表,元组使用小括号()
穿件,元素之间使用逗号隔开。
tup1 = ('baidu', 'alibaba', 1997, 2000)
tup2 = (1, 2, 3, 4)
tup3 = ('a', 'b', 'c')
tup4 = () # 空元组
tup5 = (3,)
# tup5 = (3) # 该语句的tup5为int类型不是元组
需要注意:元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
Python元组的访问,删除,运算符和函数和列表相同,唯一需要注意的是元组不能修改元素。
Python字典
Python中的字典是一种(key=>value)的键值对容器。键必须唯一并且不可变,如字符串,数字或元组,不可使用列表作为键。
Python字典创建
字典使用大括号{}
创建,元素之间使用逗号分隔,key和value之间使用冒号隔开:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
dict3 = { 'a' : 'aa', 'b' : 'bb' }
Python字典访问
Python字典通过键访问,将键作为下标访问:
dict = {'name': 'uusama', 'age': 20}
print ("dict['name']: ", dict['name']) # dict['name']: uusama
print ("dict['age']: ", dict['age']) # dict['age']: 20
print ("dict['phone']: ", dict['phone']) # 报错:KeyError
如果字典中没有访问的键,则会报KeyError错误。
Python字典内容修改
Python可以通过键来对已有内容进行修改,如果没有相应匹配键的值则添加:
dict = {'name': 'uusama', 'age': 20}
dict['name'] = 'uusama.com'; # 更新 name
dict['school'] = 'unknow' # 添加信息
print ("dict['name']: ", dict['name']) # dict['name']: uusama.com
print ("dict['school']: ", dict['school']) # dict['school']: unknow
Python字典元素删除
同样适用del
删除指定键的元素,可以使用clear()
方法清空字典
dict = {'name': 'uusama', 'age': 20}
del dict['age'] # 删除键 'age'
dict.clear() # 清空字典
del dict # 删除字典
Python指定嵌套
Python字典的值可以是字典,所以可以多级嵌套:
cities={
'广东':{
'深圳':['a','b','c'],
'广州':['s','s','s','s'],
'珠海':['c','c','c',],
},
'贵州':{
'贵阳':['as','ad','ae'],
'遵义':['vb','vs','vs'],
}
}
Python字典内置函数
Python字典包含了以下内置函数
函数名 | 函数描述 |
---|---|
len(dict) |
计算字典元素个数,即键的总数 |
str(dict) |
输出字典,以可打印的字符串表示 |
type(variable) |
返回输入的变量类型,如果变量是字典就返回字典类型 |
Python字典方法
同样Python字典也是一种内置对象,常用的方法如下:
方法名 | 描述 |
---|---|
dict.clear() |
删除字典内所有元素 |
dict.copy() |
返回一个字典的浅复制 |
dict.fromkeys() |
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key, default=None) |
返回指定键的值,如果值不在字典中返回default值 |
dict.items() |
以列表返回可遍历的(键, 值) 元组数组 |
dict.keys() |
以列表返回一个字典所有的键 |
dict.values() |
以列表返回字典中的所有值 |
dict.setdefault(key, default=None) |
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict.update(dict2) |
把字典dict2的键/值对更新到dict里 |
dict.pop(key[,default]) |
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值 |
dict.popitem() |
随机返回并删除字典中的一对键和值(一般删除末尾对) |
key in dict |
如果键在字典dict里返回true,否则返回false |