zoukankan      html  css  js  c++  java
  • 2020/2/2-Python学习计划

    Python基础

    上学期的课程中我学习了编译原理,虽然成绩渣渣,但是不影响我对编译过程有了整体的理解;

    Python作为一种计算机编程语言,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义,所以,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。Python也不例外。

    最后要注意的是:Python程序是大小写敏感的,如果写错了大小写,程序会报错。

    同时需要注意的是:Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。

    List与Tuple

    Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

    另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。

    Python条件

    条件判断可以让计算机自己做选择,Python的if...elif...else很灵活。

    条件判断从上向下匹配,当满足条件时执行对应的块内语句,后续的elif和else都不再执行

    Python循环

    for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。

    Python提供一个range()函数,可以生成一个整数序列

    第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。

    在循环中,break语句可以提前退出循环。

    在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。

    break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。

    要特别注意,不要滥用breakcontinue语句。breakcontinue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到breakcontinue语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉breakcontinue语句。

    Dict与Set

    Dict

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

    dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。

    第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

    把数据放入dict的方法,除了初始化时指定外,还可以通过key放入

    和list比较,dict有以下几个特点:

    1. 查找和插入的速度极快,不会随着key的增加而变慢;
    2. 需要占用大量的内存,内存浪费多。

    而list相反:

    1. 查找和插入的时间随着元素的增加而增加;
    2. 占用空间小,浪费内存很少。

    所以,dict是用空间来换取时间的一种方法。

    dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

    set

    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

    重复元素在set中自动被过滤;

    set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。

  • 相关阅读:
    2016CCPC长春
    POJ 3974
    CH 1401
    POJ 1426
    hihocoder 1829
    江南OJ 1151
    POJ 3279
    POJ 3349
    POJ 3278
    ZOJ 3983
  • 原文地址:https://www.cnblogs.com/fuheishi/p/12251324.html
Copyright © 2011-2022 走看看