Python 学习笔记 之 01 - 基础总结
发布日期:2021-05-20 18:23:15 浏览次数:19 分类:原创文章

本文共 2719 字,大约阅读时间需要 9 分钟。


数据类型


 整数

  十六进制和八进制使用0开头,0x12f, 010

 浮点数

  可以用科学记数法,如1.23x10^9 可以写成 12.3e8 ,0.000012可以写成 1.2e-5

 空值

  用None表示 , 注意大小写。

 整数的运算永远是精确的,浮点数运算可能会有四舍五入的误差。

 

除法

 10/3 = 3.33333

 9/3 = 3.0

 

 地板除法

  10//3 = 3

  

 负数的地板除法

  负数的取整会取远离0的一方, 如 -10//3 = -4 , 因为-3.33333 取整后是 -4 。


取余

  10%3 = 1

  取余的算法为 x%y == x-((x//y) * y)

 

字符串

 '' 或者 ""

字符串转义

 使用 \ , 或者 r'' 、 r"" 将指定字符串默认不转义

字符串换行

 使用'''

 

字符编码



  •  获取字符的整数表示

      ord()

  •  把整数编码转换为对应字符

      chr()

  •   用十六进制的方式表示字符的整数编码

       '\十六进制编码'

  •  将字符从str转为bytes,这样每个字符仅占用一个字节,便于传输。

      b'ABC'

 

  •  将str编码为指定字符集的bytes

      'ABC'.encode('ascii')

  •  将bytes转为str

      b'ABC'.decode('ascii')

  


如果bytes中包含无法解码的字节,会报错,忽略小部分错误可以使用 b'ABC'.decode('ascii'.errors='ignore')

 

  •  获取长度、获取str包含多少字符、获取bytes包含多少字节

      len()

      len('ABC')

      len(b'ABC')


字符串格式化


 占位符



  •   整数      %d

  •   浮点数   %f

  •   字符串   %s

  •   十六进制     %x

 有几个占位符, 后面就跟几个变量、值

 

 format()函数

  {0},{1},{2}…… .format('a','b','c'……)


list

 形式为['a',2,True,None……]

  •  获取元素个数

      len(list_name)

      len(['a','b'……])

  •  通过索引获取元素

      list_name[0] #第一个元素索引位为0

      list_name[-1] #获取最后一个元素

  


索引超出范围时会报错,为避免报错,可以结合是同len() - 1 的方式来标记索引范围

  •  向list中追加元素

    •     追加到list末尾


           list_name.append()



    •     追加到指定位置 , 如超出元素个数,则插入到最末尾


           list_name.insert(x,'')

  •  向list中删除元素

      list_name.pop()

  •  删除指定索引位置的元素

      list_name.pop(x)

  •  替换某个元素,可以直接赋值给对应索引位

      list_name[2]='new_values'

  •  list可以作为元素被别的list包含

      取嵌套list的元素时,使用多层索引,如:

         lo = [1,2,3,['a','b','c'],4,5]

       如需取 a 值,  则使用 lo[3][0]

  •  如果一个list中没有元素,则长度为0

 

tuple

 形式为('a',2,True,None……) ,和list几乎一样

  •  tuple初始化后不可以修改,所以不支持append、insert、pop

  •  tuple可以定义为空

  •  如果tuple中只包含一个元素, 在定义的时候要在元素后加逗号,如:


       t0 = ('a',) ,以避免与数学运算的小括号混淆。



  •  虽然tuple不可以修改,但是当tuple包含list时,list的内容是可以修改的。因此,要保证tuple中一个内容都不变,就要保证每一个元素都不可改变。

 

条件判断

 形式为

  if x:

   active1

  elif y:

   active2

  else :

   active3

 判断行为用冒号,后续跟随的动作要缩进以代表判断后要执行的部分。


循环


 for...in...循环

  形式为

   for x in y:

    active

  

 while 循环

  形式为

   while 条件:

    active


 批量生成整数序列

  range(n) #从0开始生成到n-1的序列,如果n小于0则为空

 

 退出循环

  break

 跳过本次循环

  continue



 不要滥用break和continue ,尽可能少用,尽可能用循环逻辑去代替break和continue


 


dict



  1.  key-value存储,一个key只能对应一个value,后出现的key值会覆盖之前相同key的值.

  2.  key要用不可变对象,所以key不能用list。

  3.  dict是使用内存空间换取运行时间的方法,占用内存多于list,但是查找和插入速度极快。

 

 形式为 {'key1':value1, key2:value2 ,…… }

 调用时为 dict_name[keyx]

 key的存放顺序与录入顺序无关。

 

  •  调用时如果key不存在会报错,可以通过in来判断key是否存在

      'abc' in dict_name

  •  使用get()获取key对应的value,如果不存在,返回None

      dict_name.get(keyx)

  •   如果不存在,也可以返回定义值

       dict_name.get(keyx , VALUE)

 从dict中删除


      pop(keyx)


     如果不指定key ,会报错。


set



  • 和dict类似,也是一组key的集合,但是不包含value。

  • 由于key不能重复,所以set中没有重复值

  • set内的list中的元素顺序并不表示set中的顺序,因此,set中的元素也是无序的。



 创建set需要一个list。
  s0 = set( [1,2,3,4,5] )
 or
  list1 = [1,2,3,4,5]
  s1 = set( list1 )



  •  添加元素到set中


      s0.add()
  添加到set中的元素不支持可变对象,因此list不能作为元素添加到set中



  •  从set中删除元素


      s.remove()
  一次只能remove一个元素。
不可变对象 使用replace()函数对不可变对象值进行替换后,实际上原对象的值并没有变化,用print()函数对原对象进行输出既可以看出。
所以,对于不可变对象来说,调用对象的任意方法都不会改变对该对象自身的内容,仅仅会创建新的对象并返回,这样就保证了不可变对象本身是永远不可变的。

上一篇:Day7 python高级特性-- 切片 Slice
下一篇:Day6 递归函数

发表评论

最新留言

不错!
[***.144.177.141]2025年04月16日 14时26分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Kubernetes实战(七)-优先级调度(Pod Priority Preemption) 2023-01-29
Kubernetes实战(三十一)-Calico网络部署(推荐) 2023-01-29
Kubernetes实战(三十三)-外部Etcd集群部署与调优(更安全的数据存储策略) 2023-01-29
Kubernetes实战(三十二)-Kubeadm 安装 Kubernetes v1.24.0 2023-01-29
Kubernetes实战(三十)-HTTP 7层路由机制(Ingress) 2023-01-29
Kubernetes实战(三)-定向调度(NodeSelector) 2023-01-29
Kubernetes实战(九)-初始化容器(Init Container) 2023-01-29
Kubernetes实战(二十七)-集群访问外部服务(Endpoints) 2023-01-29
Kubernetes实战(二十三)-kubernetes二进制文件方式部署集群(安全)(上) 2023-01-29
Kubernetes实战(二十九)-集群资源管理(CPU & Memory) 2023-01-29
Kubernetes实战(二十二)-Etcd 集群部署(安全) 2023-01-29
Kubernetes实战(二十五)-Flannel 网络部署(不推荐,不支持 Etcd3) 2023-01-29
Kubernetes实战(二十八)-环境共享与隔离(Namespace) 2023-01-29
Kubernetes实战(二十六)-高可用负载均衡与外部服务(Service) 2023-01-29
Kubernetes实战(二十四)-kubernetes二进制文件方式部署集群(安全)(下) 2023-01-29
Kubernetes实战(二十)-kubernetes二进制文件方式部署集群(非安全)(下) 2023-01-29
Kubernetes实战(八)-定时任务(Cronjob) 2023-01-29
Kubernetes实战(十一)-包管理工具(Helm) 2023-01-29
Kubernetes实战(十七)-动态存储供应(StorageClass) 2023-01-29
Kubernetes实战(十三)-标签选择器(Label) 2023-01-29