IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【python学习】列表、元组、字典、集合(详解) -> 正文阅读

[数据结构与算法]【python学习】列表、元组、字典、集合(详解)

关注作者,持续阅读作者的文章,学习更多知识!
https://blog.csdn.net/weixin_53306029?spm=1001.2014.3001.5343

一、列表

列表(list)是Python中的一种数据结构,它可以存储不同类型的数据。不同元素以逗号分隔。

eg:
A = [1,'zhangsan','a', [2, 'b']]

列表使用规则

1.使用方括号[]表示开始和结束。
2.不同元素以逗号分隔。
3.每个元素的排列是有序号的,元素相同但排列不同的列表属于不同的列表。
4.列表索引是从0开始的,我们可以通过下标索引的方式来访问列表中的值。

//下标索引访问
A = ['xiaoWang', 'xiaoZhang', 'xiaoHua']
print(A[0])
print(A[1])
 

列表的循环遍历

1.使用for循环遍历列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
for name in namesList:
    print(name)

2.使用while循环遍历列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
length = len(namesList)
i = 0
while i<length:
    print(namesList[i])
    i+=1

列表的增删改查

1.在列表中增加元素

在列表中增加元素的方式有多种,具体如下:
通过append可以向列表添加元素
通过extend可以将另一个列表的元素添加到列表中。
通过insert在指定位置index前插入元素object。

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
namesList.append('xiaoLiu')
print(namesList)

namesList2 = ['ximen','xiahou']
namesList.extend(namesList2)
print(namesList)

namesList.insert(2,'huangfu')
print(namesList)

2.在列表中查找元素

在列表中查找元素的方法包括:

  • in(存在),如果存在那么结果为true,否则为false。
  • not in(不存在),如果不存在那么结果为true,否则false。
namesList = ['xiaoWang','xiaoZhang','xiaoHua']
print('xiaowang' in namesList)
print('xiaowang' not in namesList)

3.在列表中修改元素

列表元素的修改,也是通过下标来实现的:

nameList = ['xiaoWang','xiaoZhang','xiaoHua']
nameList[1] = 'xiaoLu'
print(nameList)

4.在列表中删除元素

列表元素的常用删除方法有三种,具体如下:

del:根据下标进行删除(例:del l[0])
pop:删除最后一个元素(例:l.pop())
remove:根据元素的值进行删除(例:l.remove('xiaoWang')

列表的排序操作

列表的排序可以通过下面两个方法实现:

  • sort方法:列表的元素按照特定顺序排列(默认升序)。
  • reverse方法:将列表逆置。

在这里插入图片描述

列表的运算符操作

+:将两个列表中的元素合并在一起产生一个新的列表。(相当于extend函数)

例:

print([1, 2, 3] + ['a', 'b', 'c'])
>>> [1, 2, 3, 'a', 'b', 'c']

*:将列表中的元素重复N次,产生一个新的列表

例:

print([1, 2, 3] * 3)
>>>[1, 2, 3, 1, 2, 3, 1, 2, 3]

==,<,>:比较运算符与字符串比较大小相似

例:

list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2) # True
print(list1 == [1, 3, 2]) # False(顺序不对)

in 和 not in:判断列表中是否存在指定的元素

例:

print(1 in [1, 2, 3]) #True
print([1, 2] in [1, 2, 3]) # False

列表的嵌套

列表的嵌套指的是一个列表的元素又是一个列表。

schoolNames = [['北京大学','清华大学'],
               ['南开大学','天津大学','天津师范大学'],
              ['山东大学','中国海洋大学']]

二、元组

Python的元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )

写法2:(不建议)
tup3 = "a", "b", "c", "d"

元组使用规则

1.使用圆括号()表示开始和结束。
2.不同元素以逗号分隔。
3.每个元素的排列是有序号的,元素相同但排列不同的元组属于不同的元组。
4.元组可以使用下标索引来访问元组中的值 。
5.元组不允许修改元组。

tup1 = (12, 34.56)
# 以下修改元组元素操作是非法的。
tup1[0] = 100

元组的遍历

a_tuple = (1, 2, 3, 4, 5)
for num in a_tuple:
     print(num,end=" ") #end指定结尾符,默认回车
a_tuple = (1, 2, 3, 4, 5)
i = 0
while i < len(a_tuple):
    print(a_tuple[i],end=" ")
    i += 1

元组的内置函数

在这里插入图片描述

元组的运算符操作

+:将两个元组中的元素合并在一起产生一个新的元组。(和列表相同)
*:将元组中的元素重复N次,产生一个新的元组

print((1, 2, 3) +(4, 5, 6))
print((1, 2, 3) * 3)
#(1, 2, 3, 4, 5, 6)
# (1, 2, 3, 1, 2, 3, 1, 2, 3)

三、字典

字典是一种存储数据的容器,它和列表一样,都可以存储多个数据。
每个元素都是由两部分组成的,分别是键和值。

info = {'name':'张三', 'sex':'f', 'address':'北京'}
#‘name’为键,‘张三’为值。

字典使用规则:

1.使用花括号{}表示开始和结束,并且每个元素是以key:value方式成对出现。
2.不同元素以逗号分隔。
3.每个元素的排列是无序的,元素相同但排列不同的字典属于相同的字典。
4.根据键访问值。(注意:如果使用的是不存在的键,则程序会报错。

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'北京'}
print(info['name'])
print(info['address'])

如果我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值。

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'北京'}
age = info.get('age')
print(age) #'age'键不存在,所以age为None
age = info.get('age', 18) # 若info不存在'age',返回默认值18
print(age)
age = info.get('age', '索引不存在') 
print(age)

在这里插入图片描述

字典的增删改

修改字典的元素

info = {'name':'班长', 'id':100,'sex':'f', 'address':'北京'}
newId = input('请输入新的学号')
info['id'] = int(newId)
print('修改之后的id为:%d'  % info['id'])

在这里插入图片描述

添加新的字典元素

法1:

info = {'name':'班长', 'id':100,'sex':'f', 'address':'北京'}
newId = input('请输入电话')
info['phone'] = newId
print(info)

在这里插入图片描述
法2:

#添加方法二:使用update方法添加
info = {'name':'班长', 'id':100,'sex':'f', 'address':'北京'}
phone_dic = {'phone':'18812345678'}
info.update(phone_dic)
print(info)

在这里插入图片描述

删除字典元素

  • del:可删除字典中元素或者删除字典;删除字典后,字典完全不存在了,无法再根据键访问字典的值。
    del info['sex'], del info;

  • pop:删除元素并返回value值。info.pop('sex')

  • clear:只是清空字典中的数据,字典还存在,只不过没有元素。 info.clear()

在这里插入图片描述

计算字典中键值对的个数

dicts = {'Name': 'Zara', 'Age': 7}
print("Length : %d" % len (dicts))

在这里插入图片描述

获取字典中键的列表

keys()方法返回在字典中的所有可用的键,可通过list(dict.keys())方式转换为列表。

dicts = {'Name': 'Zara', 'Age': 7}
print(dicts.keys())
print(list(dicts.keys())) #可转换为list类型

在这里插入图片描述

获取字典中值的列表

values()方法返回在字典中的所有可用的值,同样可通过list()转化为列表

dicts = {'Name': 'Zara', 'Age': 7}
print(dicts.values())
print(list(dicts.values()))#可转换为list类型

在这里插入图片描述

计算字典中键值对的个数

items()方法返回字典的(键,值)元组对的列表

dicts= {'Name': 'Zara', 'Age': 7}
print("Value : %s" %  dicts.items())
print(type(list( dicts.items())[0])) 
#查看第0个item的类型

在这里插入图片描述

字典的遍历

1.遍历字典的键key(直接遍历,不必转换为list)

dicts = {'Name': 'Zara', 'Age': 7}
for key in dicts.keys():
    print(key)

2. 遍历字典的值value(不必转换为list)

dicts = {'Name': 'Zara', 'Age': 7}
for value in dicts.values():
    print(value)

3. 遍历字典的元素

dicts = {'Name': 'Zara', 'Age': 7}
for item in dicts.items():
     print(item)

4. 遍历字典的键值对

dicts = {'Name': 'Zara', 'Age': 7}
for key,value in dicts.items():
	print("key=%s,value=%s"%(key,value))

在这里插入图片描述

集合

集合(set)是一个无序的不重复元素序列。对应于数学中集合的概念。

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
letters = set(['apple', 'orange', 'apple', 'pear', 'orange', 'banana'])

在这里插入图片描述
可以使用大括号 { } 或者 set() 函数创建集合;
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

集合使用规则:

  • 1.使用花括号{}表示开始和结束,并且每个元素是以单个元素方式出现。
  • 2.不同元素以逗号分隔。
  • 3.每个元素的排列是无序的,元素相同但排列不同的集合属于相同的集合。
  • 4.集合中若有重复元素,会自动删除重复值,不会报错。

集合常见操作1

添加元素

thisset = {"Google", "Runoob", "Taobao"}
thisset.add("Facebook")
print(thisset)

合并

thisset = {"Google", "Runoob", "Taobao"}
newset = {'HUAWEI','Alibaba'}
thisset.update(newset)
print(thisset)

删除元素

thisset = {"Runoob", "Taobao"}
thisset.remove("Google") #删除没有的元素会报错
print(thisset)
thisset.discard("Google")#删除没有的元素不会报错
print(thisset)
thisset.clear()

随机删除

thisset = {"Google", "Runoob", "Taobao"}
print(thisset) #可以发现每次输出的元素顺序不同
print(thisset.pop())
# 实际每次删除的是前边第一个元素,而集合的排列每次是随机的,所以相当于随机删除一个元素

集合的常见操作2

1.集合的交集s1 & s2,s1.intersection(s2)
2.集合的并集s1 | s2,s1.union(s2)
3.集合的差集 s1 - s2, s1.difference(s2) ,从集合s1里去掉和s2交集的部分
4.集合的交叉补集 s1 ^ s2, s1.symmetric_difference(s2) 从s1和s2并集里去掉交集的部分

使用函数不改变原集合

在这里插入图片描述

  • S - T 返回一个新集合,包括在集合S但不在T中的元素
  • S ^ T 返回一个新集合, 包括集合S和T中不相同元素
  • S <= T 或 S < T 返回True/False, 判断S是否为T的子集、真子集(如果A包含B,且A不等于B,就说集合B是集合A的真子集。)
  • S >= T 或 S > T 返回True/False, 判断S是否包含子集T、真子集T

列表、元组、字典、集合对比

在这里插入图片描述
在这里插入图片描述

拓展:zip函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组。
1.如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
2.利用 * 号操作符,可以将元组解压为列表。

a, b, c = [1,2,3], [4,5,6], [4,5,6,7,8]
zipped = list(zip(a,b))     # 打包为元组的列表
>>>[(1, 4), (2, 5), (3, 6)]
list(zip(a,c))              # 元素个数与最短的列表一致
>>>[(1, 4), (2, 5), (3, 6)]
zipped = zip(a,c)
print(*zipped)
>>>(1, 4) (2, 5) (3, 6)
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:56:50  更:2022-04-07 22:56:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:27:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码