Python培训(一)— 列表、元组、字典、字符串

前言

  • 各位应该还些许记得 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

返回字典的值,可能包含重复值

for 循环

  • 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插件快速发布