Python学习入门(个人版)
本文最后更新于:3 年前
前言
最近在学习py,趁着没忘把这两天(其实也就学了两次)学的总结一下,我是学C语言起手的,就顺便做个知识迁移,重点比较一下py和C语言或C++之间不同的地方,相同的就不提了。
学习书籍——《python编程,从入门到实践》
学了点py,说说感受,确实是“简单”了一些,并不是说它不复杂(函数方法多的要死),而是封装的是真的好,C语言几乎所有函数都是自己写,sort函数写了不知道多少个,py直接提供,挺不错的。这种简单对上手难度的减少有很大帮助,对新手很友好,你甚至不需要知道变量的类型就能写py的代码,这在C语言是不可想象的,你不会变量类型,你变量都定义不了。当然简单是要付出代价的,我这里并不说运行和解释编译上的事,而是对学习编程的人来说,py优秀的封装是优点,同时也是学习编程的人向更深的地方迈进的难关,因为你只需要用函数,用方法就ok,功能一样能实现,其他的什么py都帮你搞好了。知其然还要知其所以然,只有更深的学习,才能更理解代码和编程,我或许明白现在很多学校还是要教C语言的原因了。
好了言归正传,py的学习笔记。
内容:从开始到字典。
一、零碎
py不用定义变量就能直接用!!!!
a = 10;
a = 5;
a = 2.6;
a = ‘5656’;
a = [1,2,3,5,6,6,6];
a = {“dsfs”:55};
完全OK,当时着实惊到我了。字符串的方法:
| title() | 首字母大写 |
| upper() | 全大写 |
| lower() | 全小写 |
| rstrip() | 保证字符串末尾无空格(暂时的) |
| lstrip() | 保证字符串开头无空格(暂时的) |
| strip() | 保证字符串前后无空格(暂时的) |
| str() | 非字符串转字符串(数字->字符) |
用**代表乘方
3**2 = 3^2 = 9;3/2 = 1.5!!!
整数除整数可以得到小数。注释:
#单行注释
‘’‘
多行注释
‘‘’
“”“
多行注释
““”
- 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(结构体名)——没这个操作……
- 对字典的遍历:
for A,B in M.items(): A-键;B-值;M-字典名;M.items()-返回一个键值对只遍历键:方法keys()——for A in M.keys():只遍历值:方法values()——for A in M. values():
注:集合——set(列表)——>剔除重复项
- 嵌套:字典列表-(结构体数组)
列表名 = [字典名1,字典名2,字典名3……];
字典中有列表(数组当结构体中的元素)
键:值(是一个列表)
字典套字典(结构体的相互嵌套)
访问:一级一级的(点)出来。