• 认真地记录技术中遇到的坑!

Python中的基本数据结构:列表,元组,字典

Python 悠悠 8个月前 (05-01) 305次浏览 0个评论

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

喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址