前言:数据结构不管在哪门编程语言之中都是非常重要的,因为学校的课程学习到了python,所以今天来聊聊关于python的数据结构使用。

一.列表 list

1.列表基本介绍

  1. 列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除;
  2. 列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素;
  3. 列表中的元素可以是Python中的任何对象;
  4. 可以为任意对象就意味着元素可以是字符串、整数、元组、也可以是list等Python中的对象。

2.创建列表

 1 #list列表的三种创建方式
2 #1.直接创建
3 lst = [1,2,3,4,5,"python"]
4 print("lst====",lst)
5 #2.通过list()方法来创建
6 lst2 = list([2,4,5,6,3])
7 print("lst2=====",lst2)
8 #可以直接用range函数生成
9 lst3 = list(range(10))
10 print("lst3=====",lst3)
11 #3.通过列表生成式来生成。 格式: 表达式 for 变量名 in range(100)
12 lst4 = [i**2 for i in range(1,5)]
13 print("lst4====",lst4)

3. 列表的基本操作 增删改查

 1 lst = [1,2,3,4,5,"python"]
2 lst2 = [8,9,10]
3 #1.增加元素
4 #在列表中的末尾一个元素
5 lsts = lst.append(56)
6 print("在列表的末尾添加一个元素append(56)=====:",lst)
7 #在列表中的末尾添加多个元素,没有返回值
8 lst.extend(lst2)
9 print("在列表的末尾添加多个元素extend(lst2)=====:",lst)
10 #在指定位置添加一个元素
11 lst.insert(0,"hahaha")
12 print("添加了hahaha这个元素以后========",lst)

#2.删除列表
#remove()方法 删除指定的元素,一次只删除一个元素,重复元素只删除第一个,元素不存在则报错
lst.remove(5)
#lst.remove("ggg") #ValueError: list.remove(x): x not in list
print("移除5这个元素后=======",lst)
#pop删除一个指定索引上的函数,指定索引不存在则直接报错,如果不指定索引,则默认删除列表最后一个元素
lst.pop(0)
print("删除第0位元素后====",lst)
#clear清空列表
lst.clear()
print("clear()清空列表=====",lst)
#del删除列表
del lst
print(lst)

#3.修改列表元素:
lst[0] = 88
print(lst)

#4.查询列表元素   注意,索引可以为正数,也可以为复数!这是python中的特点
number = lst[0]
print(number)
#index(元素名)传入元素名字,获取它的索引
print("python在列表中的索引是:",lst.index("python"))

 列表的其他操作

 1 lst = [1,2,3,4,5,"python"]
2
3 #切片表达式:可以进行列表的所有增删查操作
4 # 格式: [起始位置:结束位置:步长] 起始位置和结束位置都可以不写
5 #查询指定位置的元素
6 lst2 = lst[:4]
7 print(lst2)
8 #删除指定位置的元素
9 lst[5:] = []
10 print(lst)
11 #修改指定位置的元素
12 lst[:5] = [8,8,8,8,8]
13 print(lst)
14
15 #列表生成式 格式:表达式 for i in range()
16 lst2 = [i**2 for i in range(10)]
17 print("使用列表生成式lst2:",lst2)
18
19 #判断元素是否在列表中 in not in
20 print('a' in lst2)
21 print('a' not in lst2)
22
23 #排序,倒序方法
24 lst2.reverse()
25 print("使用列表的倒序reverse方法后:",lst2)
26 lst2.sort()
27 print("使用列表的排序sort方法后:",lst2)

二 字典

1.字典的的基本介绍

  • 字典中的数据必须以键值对的形式出现,即k,v:

      key:必须是可哈希的值,比如intmstring,float,tuple,但是,list,set,dict不行

      value:任何值

  • 键不可重复,值可重复

      键若重复字典中只会记该键对应的最后一个值

  • 字典中键(key)是不可变的,何为不可变对象,不能进行修改;而值(value)是可以修改的,可以是任何对象。

      在dict中是根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。

2.字典的基本操作

 1 #字典的创建
2 dict2={}
3 dict1 = {"name":"zhangsan","age":23}
4 print(dict1)
5 dict3 = dict(name="jack",age=23,sex="男")
6 print(dict3)
7
8 #新增
9 dict3['happy'] = True
10 #删除 del dict3['name'] 删除一个键值对
11 #dict3.clear() #直接删除整个字典元素
12 #获取值有两种方式:1.直接通过键来获取 2.通过get方法来使用
13 print(dict3['age'])
14 print(dict3.get('sex'))
15 print(dict3.get('money',999999999)) #后面跟着的数字是默认值,如果该键不存在那么就使用默认值

3.字典的其他操作

#常用方法:keys() values() items() 分别获取字典的所有键,值,键值对
dict3_keys = dict3.keys()
print(type(dict3_keys))
print(dict3_keys)
print(list(dict3_keys)) print("获取所有的值:",dict3.values())
print("将字典中所有值转换为列表:",list(dict3.values()))
#字典生成式  zip(键的列表,值的列表)
foods = ['apple','bnana','origin']
prices=[2.3,453,456]
d = {food:price for food,price in zip(foods,prices)}
print(d)
#判断元素是否在字典中
isTrue = 'names' in dict3
print(isTrue)

三 元组 tuple

1.元组介绍

元组Tuple,用法与List类似,但元组中的值一经初始化,就不能修改,没有List中的append(), insert(), pop()等修改的方法,只能对元素进行查询

2.元组基本操作

 1 #元组的创建方式
2 #直接赋值创建
3 t = ("python","love","me")
4 #通过内置函数创建
5 t2 = tuple(("i","love","python"))
6 print(t,type(t))
7 print(t2,type(t2))
8 #注意:只包含一个元素的元组必须有一个逗号,否则会被当成字符串。
9 t3 = ("tuple")
10 print(t3,type(t3))
11 t4 = ("tuple",)
12 print(t4,type(t4))

3.其他操作

1 #元组的遍历,由于元组是可迭代对象,所以可以用for in 遍历
2 for i in t:
3 print(i,type(i))

四 集合set

1.集合介绍

  • 集合更接近数学上集合的概念。集合中每个元素都是无序的、不重复的任意对象。
  • 可以通过集合去判断数据的从属关系,也可以通过集合把数据结构中重复的元素减掉。集合可做集合运算,可添加和删除元素。
  • 集合内数据无序,即无法使用索引和分片
  • 集合内部数据元素具有唯一性,可以用来排除重复数据
  • 集合内的数据:str,int,float,tuple,冰冻集合等,即内部只能放置可哈希数据

2.集合基本操作

 1 #集合的创建方式
2 sets1 = set() #创建一个空集合
3 print(sets1,"sets1")
4 sets2 = set(range(10)) #创建一个0-9的集合
5 print(sets2,"sets2")
6 sets3 = set(list([1,2,3,4456,5,5,65,123])) #将给定的列表转换为集合
7 print(sets3,"sets3")
8 #判断元素是否位于集合当中 in not in
9 isTrue = 3 in sets3
10 print(isTrue)
11 print(000 not in sets3)
12
13
14 #添加元素
15 #若一次只添加一个元素
16 sets3.add("里斯")
17 print(sets3,"sets3")
18 #一次添加多个元素 使用update方法
19 sets3.update({100,1200,5456,4655,89,5,123})
20 print(sets3,"sets3")
21
22 #删除元素
23 sets3.discard("dfs") #如果指定删除的元素不存在不抛出异常,推荐使用!
24 print(sets3)
25 #remove()一次删除一个指定的元素,如果元素不存在那么就抛出异常
26 sets3.pop() #默认删除集合中第一个元素
27 sets3.pop()
28 print(sets3,"sets3")
29 #clear() 清空整个集合

3.其他操作

#判断两个集合之间的关系
s1 = {i for i in range(10)}
s2 = {i for i in range(5,15)}
s3 = {i for i in range(100,102)}
#1.判断两个集合是否相等 == !=
print(s1 == s2)
#2.判断一个集合是否为另一个集合的子集
print(s1.issubset(s2))
#3.判断一个集合是否为另一个集合的超集(父集合)
print(s2.issuperset(s1))
#4.判断两个集合是否含有交集
print(s1)
print(s2)
print(s1.isdisjoint(s2))
print(s2.isdisjoint(s3)) #集合中的数学运算 交并差 对称差 s1 = {i for i in range(10)}
s2 = {i for i in range(5,15)}
s3 = {i for i in range(100,102)}
print(s1)
print(s2)
print(s1 & s2) #两个集合的交集
print(s1 | s2) #两个集合的并集
print(s1 - s2 ) #s1与s2的差集
print(s1 ^ s2) #s1与s2的对称差集 也就是并集 - 交集 # 集合生成式 注意!只有可变序列才有生成式

最后给大家分享一张图片,方便记忆!

python学习之常用数据结构的更多相关文章

  1. Python学习 Part3:数据结构

    Python学习 Part3:数据结构 1. 深入列表: 所有的列表对象方法 list.append(x): 在列表的末尾添加一个元素 list.extend(L): 在列表的末尾添加一个指定列表的所 ...

  2. python学习笔记五——数据结构

    4 . python的数据结构 数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.python提供的几种内置数据结构——元组.列表.字典和序列.内置数据结构是Python语言的精 ...

  3. Python学习笔记系列——数据结构相关

    Python有4种数据结构:列表(list).字典(dictionary).元组(Tuple).集合(set).从最直接的感官上来说,这四种数据结构的区别是:列表中的元素使用方括号括起来,字典和集合是 ...

  4. 【python基础】--常用数据结构

    list tuple dict set四种常用数据结构 list list 有序的集合,可以随时添加.删除其中元素值; 支持list嵌套模式, >>> p = ['a','b']&g ...

  5. Python—字符串和常用数据结构

    目录 1. 字符串 2. 列表 2.1 列表的增删改查 2.2 列表的切片和排序 2.3 生成式语法 3. 元组 4.集合 5. 字典 5.1 字典的增删改查 5.2 字典的常见操作 序言:这一章我们 ...

  6. Python学习笔记-常用模块

    1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...

  7. Python学习 :常用模块(二)

    常用模块(二) 四.os模块 os模块是与操作系统交互的一个接口,用于对操作系统进行调用 os.getcwd() # 提供当前工作目录 os.chdir() # 改变当前工作目录 os.curdir( ...

  8. Python机器视觉编程常用数据结构与示例

    本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容: 数据结构 通用序列操作:索引(indexing).分片(slicing).加(adding).乘(multi ...

  9. Python 学习:常用函数整理

    整理Python中常用的函数 一,把字符串形式的list转换为list 使用ast模块中的literal_eval函数来实现,把字符串形式的list转换为Python的基础类型list from as ...

随机推荐

  1. Codeforces Round #533 (Div. 2) A. Salem and Sticks(枚举)

    #include <bits/stdc++.h> using namespace std; int main() { int n;cin>>n; int a[n];for(in ...

  2. java的静态代码块和类变量的隐式覆盖

    静态代码块特点:随着类的加载执行一次,且仅会执行一次 作用:初始化类中的static修饰的变量(static修饰的变量称为类变量.类变量和静态代码块差不多,类变量仅会被初始化一次) 一.静态代码块写法 ...

  3. HDU - 3282 优先队列的使用

    题意: 按照顺序给你n个数,当数的数量是奇数的时候就输出它们的中位数 题解: 优先队列默认是大顶堆,即priority_queue.top()是这个队列中的最大值 那么我们就可以先创造一个大顶堆优先队 ...

  4. NLNet-Theme for cnblogs

    这篇文档仅作为markdown在cnblogs中的渲染效果展示.第一部分NLNet' Samples为自定义内容的效果展示.NOTE 第二.三部分的Markdown Reference(From Ty ...

  5. GDKOI2021 爆炸记

    @ 目录 GDKOI2021 爆炸记 前言 普及(Day 1~3) Day one 比赛 赛后聊天 下午讲题 下午讲课 晚上 Day two 比赛 赛后聊天 下午讲题 下午讲课 晚上 Day thre ...

  6. Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo

    前言   使用C#开发动画,绘图性能跟不上,更换方案使用Qt开发Qt的控件制作成OCX以供C#调用,而activex则是ocx的更高级形式.  QtCreator是没有Active控件项目的,所有需要 ...

  7. HDU4565-数学推导求递推公式+矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 我们带着这个根号是没法计算的 我们仔细观察一下,(a+sqrt(b))^n用二项式定理展开,我 ...

  8. Ubuntu16安装Caffe+Python3缺少libboost

    如果在/usr/lib/x86_64-linux-gnu中找到libboost_python-py3.5.so, 则 sudo ln -s libboost_python-py3.5.so libbo ...

  9. Web 实时通信方案 All In One

    Web 实时通信方案 All In One HTTP 轮询, 单向通信,开销大 HTTP 长轮询, 单向通信,开销较小 WebSocket,双向通信,开销小 (TCP 高延迟,保证数据完整性) Ser ...

  10. 十大排序算法时间复杂度 All In One

    十大排序算法时间复杂度 All In One 排序算法时间复杂度 排序算法对比 Big O O(n) O(n*log(n)) O(n^2) 冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 ...