2022年 11月 5日

Python基本数据结构

基本数据类型「number数字类型:整数int、浮点数float、bool布尔类型、complex复数(用j表示);字符串str;列表;元组;字典」

type()方法判断数据类型

  1. >> type(1) #1为整数型
  2. <class 'int'>
  3. >>> type(1.0) #1.0为浮点数型
  4. <class 'float'>
  5. >>> type(1j) #1j为复数型
  6. <class 'complex'>
  7. >>> type(True) #数值为布尔类型
  8. <class 'bool'>
  9. >>> type(False)
  10. <class 'bool'>
  11. >>> type('1') #'1'为字符串类型
  12. <class 'str'>
  13. >>> type([1]) #[1]为列表类型
  14. <class 'list'>
  15. >>> type((1,)) #(1,)为元组类型
  16. <class 'tuple'>
  17. >>> type((1)) #注意(1)表示运算
  18. <class 'int'>
  19. >>> type({'a':1}) #{'a':1}为字典类型
  20. <class 'dict'>

序列:字符串、列表、元组「每个元素会被分配序号,即偏移量,从0开始」

  • 字符串
  1. #字符串的拼接
  2. >>> 'hello'+'world'
  3. 'helloworld'
  4. >>>'hello'*3
  5. 'hellohellohello'
  6. #获取字符串中的字符
  7. >>>'hello world'[5] #获取字符串中的第5个字符「首个字符偏移量为0,即从0取起」
  8. ' '
  9. >>> 'hello world'[-5] #获取字符串中的倒数第5个字符
  10. 'w'
  11. >>> 'hello world'[0:5] #获取字符串中前5个字符,切片原则「左取右不取」
  12. 'hello'
  13. >>> 'hello world'[0:-5] #获取字符串中从头至倒数第五的字符段,切片原则「左取右不取」
  14. 'hello '
  15. >>> 'hello world'[:-5] #获取字符串中从头至倒数第五的字符段,切片原则「左取右不取」
  16. 'hello '
  17. >>> 'hello world'[5:] #获取字符串中从第5个字符段开始后的字符,切片原则「左取右不取」
  18. ' world'
  19. >>> 'hello world'[-5:] #获取字符串中从倒数第5个字符段开始后的字符,切片原则「左取右不取」
  20. 'world'
  21. #判断字符是否在字符串中
  22. >>> 'w' in 'world'
  23. True
  24. >>> 'e' in 'world'
  25. False
  26. >>> 'e' not in 'world'
  27. True
  • 列表
  1. #获取列表中的元素
  2. >>> ['学徒','读书','行路','做事'][3] #获取列表第3个元素「首个元素偏移量为0,即从0取起」
  3. '做事'
  4. >>> ['学徒','读书','行路','做事'][:2] #获取列表中前2个元素列表,切片原则「左取右不取」,切片结果为列表
  5. ['学徒', '读书']
  6. >>> ['学徒','读书','行路','做事'][-1:] #获取列表中倒数第1个元素列表,切片原则「左取右不取」,切片结果为列表
  7. ['做事']
  8. #列表的拼接
  9. >>> ['学徒','读书','行路','做事']+['不着急','不害怕','不要脸']
  10. ['学徒', '读书', '行路', '做事', '不着急', '不害怕', '不要脸']
  11. >>> ['不着急','不害怕','不要脸']*3
  12. ['不着急', '不害怕', '不要脸', '不着急', '不害怕', '不要脸', '不着急', '不害怕', '不要脸']
  13. #判断元素是否在列表中
  14. >>> '不着急' in ['不着急','不害怕','不要脸']
  15. True
  16. >>> '勇敢' in ['不着急','不害怕','不要脸']
  17. False
  18. >>> '勇敢' not in ['不着急','不害怕','不要脸']
  19. True
  20. >>> [1] #对比元组,表示一个元素的元组时需要加,「如(1,)」
  21. [1]
  22. >>> type([1]) #type()判断数据类型,[1]为列表类型
  23. <class 'list'>
  24. >>> [] #空列表
  25. []
  26. >>> type([])
  27. <class 'list'>
  28. >>>len( ['学徒','读书','行路','做事']) #判断列表的长度
  29. 4
  30. >>> max([0,2,4,1,3,5]) #判断列表中元素的最大值
  31. 5
  32. >>> min([0,2,4,1,3,5]) #判断列表中元素的最小值
  33. 0
  34. #字符串会按字母表的顺序取最大、最小值
  35. >>> max('hello world')
  36. 'w'
  37. >>> min('hello world') #字符串中存在空格
  38. ' '
  39. >>> min('helloworld')
  40. 'd'
  41. #ASCII码表
  42. >>> ord('w')
  43. 119
  44. >>> ord(' ')
  45. 32
  46. >>> ord('d')
  47. 100
  • 元组
  1. #获取元组中的元素
  2. >>> '学徒','读书','行路','做事')[3] #获取元组第3个元素「首个元素偏移量为0,即从0取起」
  3. '做事'
  4. >>>('学徒','读书','行路','做事')[:2] #获取元组中前2个元素元组,切片原则「左取右不取」,切片结果为元组
  5. '学徒', '读书'
  6. >>> '学徒','读书','行路','做事')[-1:] #获取元组中倒数第1个元素元组,切片原则「左取右不取」,切片结果为元组
  7. '做事'
  8. #列表的切片[起始位置:终止位置:步长]
  9. a=[1,2,3,4,5,6,7,8]
  10. b=a[0:len(a):2]
  11. print(b)
  12. #输出结果:[1, 3, 5, 7]
  13. #元组的拼接
  14. >>> '学徒','读书','行路','做事')+('不着急','不害怕','不要脸'
  15. '学徒', '读书', '行路', '做事', '不着急', '不害怕', '不要脸'
  16. >>> '不着急','不害怕','不要脸')*3
  17. '不着急', '不害怕', '不要脸', '不着急', '不害怕', '不要脸', '不着急', '不害怕', '不要脸'
  18. #判断元素是否在元组中
  19. >>> '不着急' in'不着急','不害怕','不要脸'
  20. True
  21. >>> '勇敢' in'不着急','不害怕','不要脸'
  22. False
  23. >>> '勇敢' not in'不着急','不害怕','不要脸'
  24. True
  25. #表示一个元素的元组
  26. >>> (1,) #需要加上,
  27. (1,)
  28. >>> type((1,))
  29. <class 'tuple'>
  30. >>> (1) #表示运算
  31. 1
  32. >>> type((1))
  33. <class 'int'>
  34. >>> () #表示空的元组
  35. ()
  36. >>> type(())
  37. <class 'tuple'>
  • 集合

 

  1. >>> {0,1,2,3,4,5,4,3,2,1}
  2. {0, 1, 2, 3, 4, 5} #集合无序不可索引且不重复
  3. >>> type({0,1,2,3,4,5})
  4. <class 'set'>
  5. >>> len({0,1,2,3,4,5})
  6. 6
  7. >>> 1 in {0,1,2,3,4,5}
  8. True
  9. >>> 1 not in {0,1,2,3,4,5}
  10. False
  11. #求两个集合的差集-
  12. >>> {0,1,2,3,4,5}-{3,4}
  13. {0, 1, 2, 5}
  14. #求两个集合的交集&
  15. >>> {0,1,2,3,4,5}&{3,4}
  16. {3, 4}
  17. #求两个集合的并集|
  18. >>> {0,1,2,3,4,5}|{3,4,7,8}
  19. {0, 1, 2, 3, 4, 5, 7, 8}
  20. #定义一个空集
  21. >>> set()
  22. set()
  23. >>> type(set())
  24. <class 'set'>
  25. >>> len(set())
  26. 0
  27. >>> type({}) #一个空的字典
  28. <class 'dict'>
  • 字典
  1. #{key1:value1,key2:value2,key3:value3},key的赋值为不可变数据类型,如:int,str,tuple等,value可以为任何数据类型
  2. >>>{'Python':'数据分析','English':'文献阅读','Write':'分析报告','Office':'办公效率'}
  3. {'Python': '数据分析', 'English': '文献阅读', 'Write': '分析报告', 'Office': '办公效率'}
  4. >>> type( {'Python':'数据分析','English':'文献阅读','Write':'分析报告','Office':'办公效率'})
  5. <class 'dict'>

 

 

补充:转义字符进制转换

转义字符👇

转义字符:\、\n「换行符」

Python中每行最多显示79个字符

IDLE中写入’Let’s go’,会报错,可以下面两种方式处理:

  1. #单引号变成双引号或三引号
  2. "Let's go"
  3. #或者插入转义字符\,避免单引号之间的冲突「引号都是要成对出现的,否则会报错」
  4. 'Let\'s go'

Windows系统里,常用\来表示绝对路径,/来表示相对路径

由于\在Python中是转义字符,所以为了避免冲突,Windows的绝对路径可以写成以下两种格式

  1. #将'\'替换成'\\'
  2. open('C:\\Users\\Ted\\Desktop\\test\\abc.txt')
  3. #在路径前加上字母r或者R,表明字符串为原始字符串
  4. open(r'C:\Users\Ted\Desktop\test\abc.txt')

进制转换👇

0b:二进制

0o:八进制

0x:十六进制

  1. #二进制转十进制/或使用int()方法进行十进制的转换
  2. >>>0b10
  3. 2
  4. >>>0b11
  5. 3
  6. #八进制转十进制
  7. >>>0o10
  8. 8
  9. >>>0o11
  10. 9
  11. #十六进制转十进制
  12. >>>0x10
  13. 16
  14. >>>0x1F
  15. 31
  16. #十进制
  17. >>>10
  18. 10
  19. >>>11
  20. 11

运用bin()方法转换成二进制

  1. #十进制转二进制
  2. >>>bin(10)
  3. '0b1010'
  4. #八进制转二进制
  5. >>> bin(0o10)
  6. '0b1000'
  7. #十六进制转二进制
  8. >>> bin(0x10)
  9. '0b10000'

同样,

运用oct()方法转换成八进制

运用hex()方法转换成十六进制