python三种数据结构,python3种基本结构

  python三种数据结构,python3种基本结构

  这篇文章给大家带来了一些关于python的知识,主要介绍了数据结构的相关问题,包括数字、字符串、列表、元组、字典等等。希望对你有帮助。

  推荐:python视频教程

  

数字 Number

整数(int)——通常指整数或整数,不带小数点的正整数或负整数。Python3 integer大小不限,可以作为Long类型使用。Bool是integer的一个子类型。

  浮点型-浮点型由整数部分和小数部分组成。浮点型也可以用科学记数法来表示(2.5e2=2.5 x 102=250)。

  复数((复数))-复数由实部和虚部组成,可以用bj,或复数(A,b)来表示。复数的实部A和虚部B都是浮点型的。

  00-1010 int (x)将x转换为整数。

  Float(x)将x转换为浮点数。

  Complex(x)将x转换为复数,其中实部为x,虚部为0。

  Complex(x,y)将X和y转换为复数,其中实部是X,虚部是y,X和y是数值表达式。

  00-1010 #-*/%(余数)* *(取幂)

  #在整数除法中,division/总是返回浮点数,

  #如果您只想获得整数结果并放弃可能的小数部分,可以使用运算符//

  打印(8/5) # 1.6

  打印(8 //5) # 1

  #注意://得到的不一定是整数,跟分母的数据类型有关系。

  打印(8 //5.0) # 1.0

  #使用* *运算求幂。

  print(5 ** 2) # 5的平方为25

数字类型转换

数字运算

index():查找子串的第一个出现位置,如果查找到的子串不存在,将抛出ValueErrorrindex()异常。

  Rindex():查找substr的最后一个出现位置,如果要查找的子串不存在,则抛出ValueError()异常。

  Find () 3360查找第一个出现的子串,如果搜索到的子串不存在,则返回-1。

  RFID () :查找子串最后出现的位置,如果搜索到的子串不存在,则返回-1。

  你好,你好

  打印(标准索引( lo)) # 3

  打印(s.find(lo)) # 3

  print(s.find(k)) # -1

  print(s.rindex(lo)) # 10

  print(s . RFind( lo )# 10

字符串 str

Upper():将字符串中的所有字符转换为大写字母

  Lower():将字符串中的所有字符转换为小写字母。

  Swapcase():将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母。

  capital():将第一个字符转换为大写,其余的转换为小写。

  Title():将每个单词的第一个字符转换为大写,其余的字符转换为小写。

  你好,蟒蛇

  print(s.upper()) #你好,PYTHON

  print(s.lower()) #你好,python

  print(s.swapcase()) #你好,pYTHON

  print(s . capital())#你好,python

  Print (s.title () # hello,Python

字符串的查询

Center () :居中对齐,第一个参数指定宽度,第二个参数指定填充符,默认为空格。如果设置的宽度小于实际宽度,将返回原始字符串。

  Ljust():左对齐,第一个参数指定宽度,第二个参数指定填充符,默认为空格。如果设置的宽度小于实际宽度,将返回原始字符串。

  Rjust():右对齐,第一个参数指定宽度,第二个参数指定填充符,默认为空格。如果设置的宽度小于实际宽度,将返回原始字符串。

  Zfill():右边对齐,左边用0填充。此方法只接收一个参数,该参数用于指定字符串的宽度。如果指定的宽度小于或等于字符串的长度,它将返回字符串。

  本身

  

s = 'hello,Python'

  '''居中对齐'''

  print(s.center(20, '*')) # ****hello,Python****

  '''左对齐 '''

  print(s.ljust(20, '*')) # hello,Python********

  print(s.ljust(5, '*')) # hello,Python

  '''右对齐'''

  print(s.rjust(20, '*')) # ********hello,Python

  '''右对齐,使用0进行填充'''

  print(s.zfill(20)) # 00000000hello,Python

  print('-1005'.zfill(8)) # -0001005

字符串拆分、切片

拆分

  

  • split(): 从字符串的左边开始拆分
  • rsplit():从字符串的右边开始拆分
    • 默认的拆分字符是空格,返回值是一个列表
    • 通过参数 sep 指定拆分字符串的拆分符
    • 通过参数 maxsplit 指定拆分宇符串时的最大拆分次数,在经过最大次数拆分之后,剩余的子串会单独做为一部分
s = 'hello word Python'

  print(s.split()) # ['hello', 'word', 'Python']

  s1 = 'hellowordPython'

  print(s1.split(sep='')) # ['hello', 'word', 'Python']

  print(s1.split('', 1)) # ['hello', 'wordPython'] # 左侧开始

  print(s1.rsplit('', 1)) # ['helloword', 'Python'] # 右侧开始

切片

  

s = 'hello,world'

  print(s[:5]) # hello 从索引0开始,到4结束

  print(s[6:]) # world 从索引6开始,到最后一个元素

  print(s[1:5:1]) # ello 从索引1开始,到4结束,步长为1

  print(s[::2]) # hlowrd 从开始到结束,步长为2

  print(s[::-1]) # dlrow,olleh 步长为负数,从最后一个元素(索引-1)开始,到第一个元素结束

  print(s[-6::1]) # ,world 从索引-6开始,到最后一个结束

字符串判断相关

  • isidentifier():判断指定的字符串是不是合法的标识符
  • isspace():判断指定的字符串是否全部由空白字符组成(回车、换行,水平制表符)
  • isalpha():判断指定的字符串是否全部由字母组成
  • isdecimal():判断指定字符串是否全部由十进制的数字组成
  • isnumeric():判断指定的字符串是否全部由数字组成
  • isalnum():判断指定字符串是否全部由字母和数字组成

字符串其他操作

字符串替换

  

  • replace()
s = 'hello,Python,Python,Python'

  print(s.replace('Python', 'Java')) # 默认全部替换 hello,Java,Java,Java

  print(s.replace('Python', 'Java', 2)) # 设置替换个数 hello,Java,Java,Python

字符串连接

  

  • join()
lst = ['hello', 'java', 'Python']

  print(','.join(lst)) # hello,java,Python

  print(''.join(lst)) # hellojavaPython

格式化字符串输出

  • %占位符:输出前加%,多个参数用小括号和逗号
    • %s 字符串
    • %i 或%d 整数
    • -%f 浮点数
  • {}占位符: 调用format()方法
  • f-string:把变量写在{}中
name = '张三'

  age = 20

  print('我叫%s, 今年%d岁' % (name, age))

  print('我叫{0}, 今年{1}岁,小名也叫{0}'.format(name, age))

  print(f'我叫{name}, 今年{age}岁')

  # 我叫张三, 今年20岁

  # 我叫张三, 今年20岁,小名也叫张三

  # 我叫张三, 今年20岁

设置数字的宽度和精度

  

# 设置数字的宽度和精度

  '''%占位'''

  print('%10d' % 99) # 10表示宽度

  print('%.3f' % 3.1415926) # .3f表示小数点后3位

  print('%10.3f' % 3.1415926) # 同时设置宽度和精度

  '''{}占位 需要使用:开始'''

  print('{:.3}'.format(3.1415926)) # .3表示3位有效数字

  print('{:.3f}'.format(3.1415926)) # .3f表示小数点后3位

  print('{:10.3f}'.format(3.1415926)) # .3f表示小数点后3位

  # 99

  #3.142

  # 3.142

  #3.14

  #3.142

  # 3.142

字符串编码

s = '但愿人长久'

  # 编码 将字符串转换成byte(二进制)数据

  print(s.encode(encoding='gbk')) #gbk,中文占用2个字节

  print(s.encode(encoding='utf-8')) #utf-8,中文占用3个字节

  # 解码 将byte(二进制)转换成字符串数据

  # 编码与解码中,encoding方式需要一致

  byte = s.encode(encoding='gbk')

  print(byte.decode(encoding='gbk'))

  # b'\xb5\xab\xd4\xb8\xc8\xcb\xb3\xa4\xbe\xc3'

  # b'\xe4\xbd\x86\xe6\x84\xbf\xe4\xba\xba\xe9\x95\xbf\xe4\xb9\x85'

  # 但愿人长久

列表 list

列表的特点

  • 有序序列

      

  • 索引映射唯一个数据

      

  • 可以存储重复数据

      

  • 任意数据类型混存

      

  • 根据需要动态分配和回收内存

      

列表的创建

  • []:使用中括号
  • list():使用内置函数list()
  • 列表生成式
    • 语法格式:[i*i for i in range(i, 10)]

        

    • 解释:i表示自定义变量,i*i表示列表元素的表达式,range(i, 10)表示可迭代对象

        

      print([i * i for i in range(1, 10)])# [1, 4, 9, 16, 25, 36, 49, 64, 81]

列表元素的查询

  1. 判断指定元素在列表中是否存在
in / not in
  1. 列表元素的遍历
for item in list:

   print(item)

  1. 查询元素索引
list.index(item)
  1. 获取元素
list = [1, 4, 9, 16, 25, 36, 49, 64, 81]print(list[3]) # 16print(list[3:6]) # [16, 25, 36]

列表元素的增加

  • append():在列表的末尾添加一个元素

      

  • extend():在列表的末尾至少添加一个元素

      

  • insert0:在列表的指定位置添加一个元素

      

  • 切片:在列表的指定位置添加至少一个元素

      

列表元素的删除

  • rerove():一次删除一个元素,
    重复元素只删除第一个,
    元素不存在抛出ValceError异常

      

  • pop():删除一个指定索引位置上的元素,
    指定索引不存在抛出IndexError异常,
    不指定索引,删除列表中最后一个元素

      

  • 切片:一次至少删除一个元素

      

  • clear0:清空列表

      

  • del:删除列表

      

列表元素的排序

  • sort(),列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse= True,进行降序排序,是对原列表的操作。
list.sort()
  • sorted(),可以指定reverse—True,进行降序排序,原列表不发生改变,产生新的列表。
sorted(list)

知识点总结

  

元组 tuple

元组的特点

Python的元组与列表类似,不同之处在于元组的元素不能修改。

  元组使用小括号,列表使用方括号

  

元组的创建

  • 直接使用小括号(), 小括号可以省略
t = ('Python', 'hello', 90)
  • 使用内置函数tuple(), 若有多个元素必须加小括号
tuple(('Python', 'hello', 90))
  • 只包含一个元素的元组,需要使用小括号和逗号
t = (10,)

知识点总结

  

字典 dict

字典的特点

  • 以键值对的方式存储,key唯一
  • key必须是不可变对象
  • 字典是可变序列
  • 字典是无序序列 (注意:自Python3.7本后,dict 对象的插入顺序保留性质已被声明为 Python 语言规范的正式部分。即,Python3.7之后,字典是有序序列,顺序为字典的插入顺序)

字典的创建

  • {}:使用花括号
  • 使用内置函数dict()
  • zip():字典生成式
items = ['fruits', 'Books', 'Others']

  prices = [12, 36, 44]

  d = {item.upper(): price for item, price in zip(items, prices)}

  print(d) # {'FRUITS': 12, 'BOOKS': 36, 'OTHERS': 44}

字典元素的获取

  • []:[]取值
    scores[‘张三’],若key不存在,抛出keyError异常
  • get():get()方法取值,若key不存在,返回None,还可以设置默认返回值

字典元素的新增

user = {"id": 1, "name": "zhangsan"}

  user["age"] = 25

  print(user) # {'id': 1, 'name': 'zhangsan', 'age': 25}

字典元素的修改

user = {"id": 1, "name": "zhangsan", "age": 25}

  user["age"] = 18

  print(user) # {'id': 1, 'name': 'zhangsan', 'age': 18}

字典元素的删除

  • del :删除指定的键值对或者删除字典
user = {"id": 1, "name": "zhangsan"}del user["id"]print(user)	# {'name': 'zhangsan'}del user
  • claer():清空字典中的元素
user = {"id": 1, "name": "zhangsan"}user.clear()print(user) # {}

获取字典视图

  • keys():获取字典中所有key
  • values():获取字典中所有value
  • items():获取字典中所有key,value键值对

字典元素的遍历

  • 遍历key,再通过key获取value
scores = {'张三': 100, '李四': 95, '王五': 88}for name in scores:

   print(name, scores[name])

  • 通过items()方法,同时遍历key,value
scores = {'张三': 100, '李四': 95, '王五': 88}for name, score in scores.items():

   print(name, score)

知识点总结

  

集合 set

集合的特点

  • 集合是可变序列
  • 集合是没有value的字典
  • 集合中元素不重复
  • 集合中元素是无序的

集合的创建

  • {}
s = {'Python', 'hello', 90}
  • 内置函数set()
print(set("Python"))print(set(range(1,6)))print(set([3, 4, 7]))print(set((3, 2, 0)))print(set({"a", "b", "c"}))# 定义空集合:set()print(set())
  • 集合生成式
print({i * i for i in range(1, 10)})# {64, 1, 4, 36, 9, 16, 49, 81, 25}

集合的操作

  1. 集合元素的判断操作
  • in / not in
  1. 集合元素的新增操作
  • add():一次添中一个元素
  • update(:)添加多个元素
  1. 集合元素的删除操作
  • remove():删除一个指定元素,如果指定的元素不存在抛出KeyError
  • discard(:)删除一个指定元素,如果指定的元素不存在不抛异常
  • pop():随机删除一个元素
  • clear():清空集合

集合间的关系

  1. 两个集合是否相等:可以使用运算符 == 或 != 进行判断,只要元素相同就相等

      

  2. 一个集合是否是另一个集合的子集:issubset()

      

s1 = {10, 20, 30, 40, 50, 60}s2 = {10, 30, 40}s3 = {10, 70}print(s2.issubset(s1)) 

  # Trueprint(s3.issubset(s1)) # False

  1. 一个集合是否是另一个集合的超集:issuperset()
print(s1.issuperset(s2)) # Trueprint(s1.issuperset(s3)) # False
  1. 两个集合是否无交集:isdisjoint()
s1 = {10, 20, 30, 40, 50, 60}s2 = {10, 30, 40}s3 = {20, 70}print(s1.isdisjoint(s2)) 

  # False 有交集print(s3.isdisjoint(s2)) # True 无交集

集合的数学操作

  1. 交集: intersection() 与 &等价,两个集合的交集
s1 = {10, 20, 30, 40}s2 = {20, 30, 40, 50, 60}print(s1.intersection(s2)) # {40, 20, 30}print(s1 & s2) # {40, 20, 30}
  1. 并集: union() 与 等价,两个集合的并集
print(s1.union(s2)) # {40, 10, 50, 20, 60, 30}print(s1 s2) # {40, 10, 50, 20, 60, 30}
  1. 差集: difference() 与 - 等价
print(s2.difference(s1)) # {50, 60}print(s2 - s1) # {50, 60}
  1. 对称差集:symmetric_difference() 与 ^ 等价
print(s2.symmetric_difference(s1)) # {10, 50, 60}print(s2 ^ s1) # {10, 50, 60}

知识点总结

  

列表、元组、字典、集合总结

  推荐学习:python教程以上就是详细介绍Python3数据结构知识点的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • mysql复合索引和组合索引,mysql组合索引数据结构
  • mysql复合索引和组合索引,mysql组合索引数据结构,Mysql之组合索引方法详解
  • mysql复合索引和组合索引,mysql复合索引数据结构
  • mysql复合索引和组合索引,mysql复合索引数据结构,MySQL的复合索引总结
  • b+树 多路搜索树,数据结构中树的分类
  • b+树 多路搜索树,数据结构中树的分类,数据结构-树(三):多路搜索树B树、B+树
  • avl树的构造,avl树特性,数据结构之AVL树详解
  • 数据结构c语言哈夫曼树,c语言哈夫曼树的构造,使用C语言详解霍夫曼树数据结构
  • c语言数据结构算法编程库,数据结构 c语言中文网
  • c语言数据结构算法编程库,数据结构 c语言中文网,C语言编程数据结构基础详解小白篇
  • c++纸牌游戏,数据结构纸牌游戏c语言
  • c++纸牌游戏,数据结构纸牌游戏c语言,C语言实战之纸牌游戏
  • ,,c#解析jobject的数据结构
  • ,,javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
  • ,,Java 数据结构与算法系列精讲之背包问题
  • 留言与评论(共有 条评论)
       
    验证码: