Python学习入门(个人版)

本文最后更新于:3 年前

前言

最近在学习py,趁着没忘把这两天(其实也就学了两次)学的总结一下,我是学C语言起手的,就顺便做个知识迁移,重点比较一下py和C语言或C++之间不同的地方,相同的就不提了。
学习书籍——《python编程,从入门到实践》
学了点py,说说感受,确实是“简单”了一些,并不是说它不复杂(函数方法多的要死),而是封装的是真的好,C语言几乎所有函数都是自己写,sort函数写了不知道多少个,py直接提供,挺不错的。这种简单对上手难度的减少有很大帮助,对新手很友好,你甚至不需要知道变量的类型就能写py的代码,这在C语言是不可想象的,你不会变量类型,你变量都定义不了。当然简单是要付出代价的,我这里并不说运行和解释编译上的事,而是对学习编程的人来说,py优秀的封装是优点,同时也是学习编程的人向更深的地方迈进的难关,因为你只需要用函数,用方法就ok,功能一样能实现,其他的什么py都帮你搞好了。知其然还要知其所以然,只有更深的学习,才能更理解代码和编程,我或许明白现在很多学校还是要教C语言的原因了。
好了言归正传,py的学习笔记。
内容:从开始到字典。


一、零碎

  1. py不用定义变量就能直接用!!!!
    a = 10;
    a = 5;
    a = 2.6;
    a = ‘5656’;
    a = [1,2,3,5,6,6,6];
    a = {“dsfs”:55};
    完全OK,当时着实惊到我了。

  2. 字符串的方法:

title() 首字母大写
upper() 全大写
lower() 全小写
rstrip() 保证字符串末尾无空格(暂时的)
lstrip() 保证字符串开头无空格(暂时的)
strip() 保证字符串前后无空格(暂时的)
str() 非字符串转字符串(数字->字符)
  1. 用**代表乘方
    3**2 = 3^2 = 9;

  2. 3/2 = 1.5!!!
    整数除整数可以得到小数。

  3. 注释:

#单行注释

‘’‘
多行注释
‘‘’

“”“
多行注释
““”

  1. Py用回车区分语句段,不用写;了,不过为保持一致的习惯我还是加上了。

二、列表

这算是学py的第一个新类型,其实和数组很像,不过比数组功能强很多,这里正好比较一下。
列表——啥都能放
b = [5,6,”5”,”5.55”,5.66,’d’];完全没有问题,C语言的数组是有类型限制的,定义的时候是啥类型就是啥,只能放同类型的变量。
列表是动态的,和C++的容器vector非常像。

  • 列表定义——列表名 = [列表内容];
  • 访问列表——列表名[序号],从0开始(可能只有matlab奇葩的会从1开始算吧……)
    注:可以倒着访问,如a[-1]——访问a列表最后一个元素,而不用管a的长度。
    A[-2]——A的倒第二元素
  • 列表修改:
    法1:访问后重新赋值。
    法2:现有方法(我一般叫C++的成员函数为方法,这种函数都是点出来的;全局函数叫函数)
尾加 append(待加内容)
插入 insert(序号,待插内容)——写哪插那,后面的元素后移。)
删除(这是函数) del 列表[序号]
弹出 pop(),弹出最后一项(当返回值)
pop(序号),弹出序号处项,后面前移
移除 remove(待移内容),查找,找到并移走,只移找到的第一个。
  • 列表排序:
    方法:
    sort()——增序
    sort(reverse = True)——降序
    sort都是永久改变列表排序的
    注:py的bool值必须要大写,False,True,小写的还不认……
    函数:sorted(例表名)——增序,临时(返回值)

  • 列表倒叙:reverse()——方法,永久的

  • 列表长度:len(列表名)——函数,返回列表长度

  • 数字列表:range(A,B),产生从A到B-1的数字
    list(range(A,B)),将range产生的数字变列表。
    min(A),max(A),sum(A)——求A列表的最小值,最大值,和。

  • 列表解析:a = [关于A的表达式 for循环(A当操作数,for A in B)]
    列表中的值为表达式的结果。

  • 列表切片,访问列表部分的元素(这一部分和matlab一样)
    切片:列表名 [开始序号:结束序号+1],省啥默认到头。
    a[0:4]——a[0], a[1], a[2],a[3];
    取倒三人:a[-3:]等价于a[-3:0] 取a[-1], a[-2],a[-3]——不用管长度

  • 遍历切片:for A in B[1:7]——看B列表1到6的元素

  • 复制切片:A = B[:]——把B全部当一个切片给A,A相当于B的拷贝

  • 列表关联:A = B——A列表和B列表指向同一个列表空间(相当于C++的引用)

  • 元组——不能改变的列表
    定义:元组名 = { 元素 };
    访问——用下标
    不可修改,但可全部重新定义。

三、for循环

for A in B:
    操作A

对B列表中的元素遍历操作,出for循环时A保留最后一次的值。
注:py不用大括号,看缩进。注意冒号
for A in range(30):
循环30次,A的值从0到29.

四、if语句

If-else

if 条件判断:
    操作
else:
    操作

If-elseif

if 条件判断:
    操作
elif 条件:
    操作
else:
    操作

逻辑与:and,C中的(&&);
逻辑或:or,C中的(||);

判断某东西是否在列表中,用关键字in
A in B——A在B(列表)中吗——返回bool值
判断某东西不在列表中,用关键字not in
A not in B——A不在B(列表)中吗——返回bool值

注:If语句中条件表达式为列表名时,列表为空时非false,不空时为true。

五、字典(和C中的结构体比较像)

py-字典:是动态的。
键值对:一一对应的一对,(键:值)——就是变量的名字和值。

  • 定义:字典名 = {键值对};
  • 访问:字典名[键]——访问这个键对应的值。
  • 添加:字典名[新键] = 新值;
    注:print(字典名)——连{ }在内的都显示。
  • 修改:字典名[键] = 新值;
  • 删除:del 字典名[键];

C语言结构体:

struct  A(名字) //结构体类型的声明
{
变量类型 变量名1;
变量类型 变量名2;
……
}b = {值1,值2……};    //结构体变量的定义和初始化

访问:结构体变量.变量名——访问这个结构体变量的这个变量名的值
结构体是静态的,因为定义好之后编译器就分配这么大的内存,变化不了了,想实现动态的改变,可以包含指针类型的变量,通过指针的指向的变化来实现。
printf(结构体名)——没这个操作……

  • 对字典的遍历:
    1. for A,B in M.items(): A-键;B-值;M-字典名;M.items()-返回一个键值对
      
      1. 只遍历键:方法keys()——for A in M.keys():
        
        1. 只遍历值:方法values()——for A in M. values():
          

注:集合——set(列表)——>剔除重复项

  • 嵌套:字典列表-(结构体数组)
    列表名 = [字典名1,字典名2,字典名3……];

字典中有列表(数组当结构体中的元素)
键:值(是一个列表)

字典套字典(结构体的相互嵌套)
访问:一级一级的(点)出来。



Python学习入门(个人版)
https://357meng.github.io/2021/08/05/py00/
作者
Mengki
发布于
2021年8月5日
更新于
2022年10月31日
许可协议