各位应该还些许记得 C++,其实 C++ 是写起来非常复杂的,学习 Python,你会发现比 C++ 方便无数倍,以下简要谈一下特点。
C++ 需要指定变量类型,int、double 等,但是 Python 可以直接赋值(熟悉MATLAB同学应该很熟悉)
Python 里面没有指针,列表、元组、字典、类等结构都是默认只能引用传参,这点非常重要。也就是说,你把一个列表当作参数传入函数,在函数中的操作在外部是会有变化的。其次这也是很容易出错的,比如下面这段代码,说明引用传参的结构:
a = [0, 0]
b = [a, a]
b[0][0] = 1
print(b)
#b = [[1, 0], [1, 0]]
python 相比 C++ 最方便的地方就体现在有很多自带的方法,比如下面要介绍的结构,都有很方便的方法直接完成最基础的操作,不会像 C++ 一样,需要自己写最基础的操作。
Python的判断、循环结构就不细讲了,这都是程序最基础的部分,非常简单。下面提一下有趣的地方
因为 Python 是根据冒号和缩进区分代码块,所以外观非常重要,要养成良好的习惯。建议使用 vscode 或者 pycharm 写代码,个人感觉 pycharm 提示更加具体,但是要多安装个软件。
Python 的条件句中,关键字 elif 而不是 else if,逻辑判断直接是 “and” 和 “or”,而且可以带连续的不等式,如:1 ⇐ x <2 and 0 < y ⇐ 10,写起来更加舒服
for 循环比较特殊,将在最后介绍一下
序列是 Python 的一种结构,字符串、列表、元组都是序列
序列的索引、切片方法这里就不讲了,自行搜索非常简单。
序列可以相加、乘法,见以下例子:
a = [1, 2]
b = [3, 4]
c = a + b
# c = [1, 2, 3, 4]
d = a * 2
# d = [1, 2, 1, 2]
列表 list 是 Python 中最常用的数据结构,每个位置可以存放任意数据。例如:
a = ["Hello", 666, [1, 2]]
删除某个索引元素方法: del a[1]
列表方法: 一个列表结构有许多自带的方法,我们不需要刻意去记忆,只需要有个影响,列表可以自己干什么,然后需要用的时候自行google就好了,用的多的方法自然过几天就记住了,下面列举常用方法,具体使用规则google就好了
方法名 | 说明 |
|---|---|
append | 添加对象到末尾 |
clear | 清空 |
copy | 复制副本,不是引用 |
count | 统计某元素出现次数 |
extend | 多个值附加到列表末尾 |
index | 寻找第一次出现索引 |
insert | 将对象插入列表 |
pop | 取出一个元素并在原列表中删除 |
reverse | 相反顺序排列列表 |
sort | 对列表排序 |
重要的问题再说一遍,列表的 = 赋值全部是引用赋值,如下:
a = [1, 2, 3]
b = a
c = a.copy()
a[0] = 4
# b = [4, 2, 3]
# c = [1, 2, 3]
元组和列表差不多,但是不能修改,可以直接用逗号分隔,也可以加圆括号,如:
a = 1, 2, 3
b = (1, 2, 3)
巧妙的交换数据方法:
a, b = b, a
字符串是不能修改的,有序列的索引、切片等操作
同样列举一下字符串的方法
方法名 | 说明 |
|---|---|
find | 查找子串 |
join | 合并序列的元素 |
split | 将字符串拆解成序列 |
lower | 返回小写版本 |
replace | 替换字符串 |
strip | 删除开头和末尾的空格 |
注意序列的方法会改变这个序列本身,而字符串不能变,所以不会改变字符串本身,而会返回一个新的字符串。比如下面:
a = [1, 2]
a.append(3)
b = "HELLO"
c = b.lower()
# a = [1, 2, 3]
# b = "HELLO"
# c = "hello"
字典是一个非常方便的结构,字典由键值对组成,一个键对应一个值,比如:
a = {'Tom': 19, 'Jerry': '21'}
b = a['Tom']
c = a['Jerry']
如上,键就是 ‘Tom’、'Jerry',他们对应的值就是 19 和 ‘21’,没错,一个是数字一个是字符串,说明值可以是任意的数据结构。但是键最好是字符串或者数字。
删除某个字典键值对:del a['Tom']
方法名称 | 说明 |
|---|---|
clear | 删除所有字典项 |
copy | 浅复制字典 |
get | 访问键值,访问不存在的键时不会报错 |
items | 返回一个包含所有字典项的列表,每个元素(key, value)的形式 |
keys | 返回字典中的键 |
pop | 获取指定键的值,并将其从字典中删除 |
popitem | 随机弹出字典项并删除 |
setdefault | 当键不存在时,添加键值对 |
values | 返回字典的值,可能包含重复值 |
Python 的 for 循环和 C++ 的完全不一样,会用的话会方便很多。
最基础的操作就是遍历一个列表、字典,最基础的形式都是下面这样:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print(key, d[key])
for key, value in d.items():
print(key, value)
下面介绍一些经常遇到的情况,如何更加快捷地使用循环
并行迭代:有时候会同时迭代两个序列,如下:
names = ['Tom', 'Jerry']
ages = [21, 19]
# 普通方法:用函数 range 生成序列
for index in range(0, len(names)):
pass
# 改进方法
for name, age in zip(names, ages):
pass
如上,超级简单,用 zip 可以 “缝合” 两个序列
迭代同时获取索引:有时候我们迭代序列,希望获取序列的值和索引序号
a = ['Hello', 'world']
for index, string in enumerate(a):
pass
如上,加上 enumerate 函数即可,超级方便
这次的东西很基础也比较简单,以后随便写什么肯定都会用得到,所以就只练一下字典的结构好了。
已知一句话:每个人都依靠自己的知识和认识,却又被之所束缚,还将这些称之为现实。但知识和认识是非常暧昧的东西,那个现实也许只不过是镜花水月,人们都是活在自我意识之中的,你不这样认为吗?你这双眼睛又能看多远呢?,写一个程序,创建一个字典,字典的键是每个字,值是这个字在这句话中出现的次数。
例如,”你“ 出现了三次,在字典中就是:{‘你’:3}
大家靠自觉哈,交的作业怎么简单怎么来,会用了就行,不用搞花里胡哨的东西,就可以直接贴上代码放张 print 的结果就行。
本文章使用limfx的vsocde插件快速发布