2020.2.1-2020.2.2 Python基础学习

写在前面

疫情突然降临湖北,欢天喜地的节日气氛变得安静,这几天在家总想学点新东西,由于我学的硬件部分的内容更多,并且有C语言基础,所以决定学习Python这样一个发展前景大、简单实用的语言。 借助廖雪峰的在线学习网站《Python编程:从入门到实践》 (非恰饭,勿喷),在刚开始的两天中,懒懒散散地学习了Python作为一个语言所需要掌握的基本语法,并且简单了解了listtupledictset这四种数据结构,下列为学习笔记

变量和两种简单数据类型

和学习C语言时一样,上来先得学的是数据类型和变量( 其实学C的时候开始老师先讲了编译原理) ### 1. 变量 - 变量名只能包含字母、数字和下划线。变量名可以字母或者下划线开头,但不能以数字开头 - 变量名不能包含空格,一般用下划线代替空格 - 不要把Python的关键字和函数名当做变量名 - 慎用I和O,因为容易被看成数字1和0 ( 这点确实特别重要hhhh ) 易错点:

1
2
3
message = 'Wellcome to the World of Python!'
print(mesage)
#哈哈,日常拼写错误,通假字从古至今从未断绝
### 2. 字符串string 字符串顾名思义就是一串字符,Python中引用字符串的引号可以是单引号也可以是双引号 #### a. 转义符 在转义符上,Python和C是类似的,因此不作过多解释,只丢几个最基本的在这里
1
2
3
4
print('Hello World!\n?????')
#这里的\n是换行
print('Hello World!\r What?')
#这里的\r是回车(光标回到起点)
上面两个转义符的效果如下:
1
2
3
换行转义符'\n'输出效果
Hello World!
?????
1
2
回车转义符'\r'输出效果
What? World!
#### b. 字符串相关函数 ##### title() title函数用于规整字符串使其符合一般文章标题要求(各个单词首字母大写
1
2
name = 'hank gan'
print(name.title())
输出结果:
1
Hank Gan
##### upper()lower() upper函数用于将单词的每个字母转化为大写 lower函数用于将单词的每个字母转化为小写
1
2
3
name = 'Hank Gan'
print(name.upper())
print(name.lower())
输出结果:
1
2
HANK GAN
hank gan
##### 合并/拼接字符串 利用+来拼接不同字符串,使其成为一个新的字符串
1
2
3
4
5
6
7
message = 'Wellcome to the World of Python!'
first_name = 'hank'
last_name = 'gan'

full_name = first_name + ' ' + last_name

print('Hello' + ' ' + full_name.title() + ', ' + message)
在上面的print语句中,我用了许多+连接了不同字符串,使同一个print能够打印更多信息,输出结果:
1
Hello Hank Gan, Wellcome to the World of Python! 
##### 对字符串中空格的操作 在我们或者其他用户向字符串中输入值时,不可避免的会存在输入空格的情况,但有的时候我们的程序在操作过程中不需要这些多余的空格,这时候就需要Python自带的字符串函数来帮忙。 rstrip()lstrip()strip() strip是“剔去”的意思,“r”和“l”分别代表左和右,那么这三个函数的作用就通俗易懂了,它们分别是剔除字符串左边、右边、左右两边空格的函数,下面是个小例子:
1
2
3
4
5
learning = "   Python   "

print(learning.lstrip())
print(learning.rstrip())
print(learning.strip())
输出结果:
1
2
3
Python   
Python
Python
联想到在转义符那一部分学过的制表符",如果将它与上述删除函数结合起来使用的话,就能轻易改变字符串中的空格了

3. 布尔值/Boolean

和C语言不同,Python是具有布尔值的,且Python的布尔值有且仅有TrueFalse。且布尔值的与、或、非运算在Python中表示为andornot

1
2
3
4
5
6
temp_a = True
temp_b = False

print(temp_a and temp_b)
print(temp_a or temp_b)
print(not temp_b)
分析: and是与运算,只有当and两边的布尔值True时,运算结果才为True,其余全为False or是或运算,当or两边的布尔值有一个True时,运算结果为True not是非运算,是一种单目运算符,not运算值为取反 运算结果为:
1
2
3
False
True
True
## 列表型数据类型list 列表由一系列按特定顺序排列的元素组成,它可以包括字符串、数字,也可以包括其他列表等等数据类型。 在Python中,用方括号[]来表示列表,并用逗号,来分隔其中的元素,例如,用list中套娃list (禁止套娃) 的方式表示出以下几个买不起的山地车品牌:
1
2
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']
### 1. 访问list的方法 #### a. 正向索引 和C语言中的数组一样,通过索引访问list时,索引号是从0开始的,也就意味着整个list的索引号应该是list中元素数目-1 同时,list中的元素若为字符串的话,也可以用上述字符串的各种处理方法来对其进行处理:
1
2
3
4
5
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

print(bicycles[0])
print('I can not afford a ' + bicycles[3][2].title() + ' ' + 'mountain bike.')
输出结果:
1
2
giant
I can not afford a Santa Cruz mountain bike.
#### b. 反向索引 如果当一个list中的元素过多,我们想取倒数第一个或者第二个,而不想输入太大的索引号(比如bicycles[9999]这种)的时候,也可以用负数来索引list:
1
2
3
4
5
6
7
8
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

print(bicycles[4])
print(bicycles[-1])

print(bicycles[3][2])
print(bicycles[-2][-1])
输出结果:
1
2
3
4
cannondale
cannondale
santa cruz
santa cruz
对照着list的各个元素索引号就很好理解上述两种索引方式 ### 2. 修改、添加和删除list中的元素 list区别于tuple(后面会写到)的一大区别就是list可以修改,而tuple在定义后就不能够更改了,所以如何修改、添加和删除list中的元素是学习list基础时重点需要掌握的内容。 #### a. 修改list中的元素 修改list中的元素其实很简单,甚至不需要函数来操作,重新定义你想要修改的元素就行了

1
2
3
4
5
6
7
8
9
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles[0] = 'dartmoor'
print(bicycles[0].upper())
'''
武汉好像玩DARTMOOR这个牌子山地车的人比较少,玩他家街车的人怪多的
他这个牌子全大写,尊重品牌名称,upper
'''

第四行代码就是对bicycle这个list的第0号索引值代表的元素进行修改 输出结果:

1
DARTMOOR
#### b. 向list中添加元素 ##### 在list末尾添加元素 可能这几天我又穷了,连美利达都买不起了,昂贵的自行车品牌中又要添加新成员了怎么办,append()函数可以解决这个问题!
1
2
3
4
5
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles.append('merida')
print('Gosh, I can not afford ' + bicycles[5].title() + ' now.')
穷了的结果:
1
Gosh, I can not afford Merida now.
除了能往list末尾添加元素,append()还有一个重要用法是用来动态地构建list:
1
2
3
4
5
6
bicycles = []  #首先定义一个需要被构建的list

bicycles.append('giant')
bicycles.append('trek')
bicycles.append('specialized')
...
这样的好处是,它可以根据我们的需要随意构建list,而不是在在写下方的代码时再回到一开始定义list的位置添加元素 ##### 在列表中插入元素 有的时候我们想在list中的某一个位置插入元素,而不是在末尾插入,这时候就需要insert()来帮忙了
1
2
3
4
5
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles.insert(0,'merida')
print(bicycles[0].title() + '\n' + bicycles[1].title())
输出结果:
1
2
Merida
Giant
可见,insert()的第一个参数是指你要把新元素插入到list中,新元素需要被安排的索引号x,插入后,原list在索引号x以后的元素索引号整体后移一位,新元素占据索引号x对应的list中的位置 #### c. 从列表中删除元素 今年收了数量可观的压岁钱,看来咱应该是买得起一辆Giant Reign了,那如何删除列表里的Giant呢? 在这里插入图片描述 ##### 知道是第几个元素 如果知道要删除的元素在list中的索引号,那么我们常用del语句来删除元素
1
2
3
4
5
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

del bicycles[0]
print(bicycles)
有钱了的结果:
1
['trek', 'specialized', ['canyon', 'commencal', 'santa cruz'], 'cannondale']
可见,我们成功删掉了Giant!(确信 ##### 知道这个元素是什么 如果我们知道这个元素是什么,那么我们常用remove()来删除元素
1
2
3
4
5
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles.remove('giant')
print(bicycles)
除此之外,我们还可以利用字符串的定义,来更进一步地利用remove()删掉我们想删掉的内容
1
2
3
4
5
6
7
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

I_have_bought_it = 'giant'
bicycles.remove(I_have_bought_it)
print(bicycles)
print(I_have_bought_it.title() + ' is not in this list because I have bought it!')
输出结果:
1
2
['trek', 'specialized', ['canyon', 'commencal', 'santa cruz'], 'cannondale']
Giant is not in this list because I have bought it!
显然,这样删除Giant更清晰,因为我把删除它的原因也表示出来了,因为我买了它 ##### 虽然要删一个元素,这个元素也想留着 这是什么奇葩要求....离开的就让它离开好嘛,不要再怀念了... 但其实也是做得到的,使用pop()可以在删除某一元素的同时,存储下被删除的这一个元素 这时候的list就像一个,而删除list末尾的元素相当于弹出栈顶元素 所以,pop()被称为“删除函数”是有些不恰当的,应该叫做“弹出函数”才对
1
2
3
4
5
6
bicycles = ['trek','specialized','santa cruz','giant']
print(bicycles)

poped_bicycle = bicycles.pop()
print(bicycles)
print('I have bought ' + poped_bicycle)
输出结果:
1
2
3
['trek', 'specialized', 'santa cruz', 'giant']
['trek', 'specialized', 'santa cruz']
I have bought giant
可见,它把被删除的元素保留在了poped_bicycles中,我们仍能访问它 其实,pop()可以弹出任意一个你知道索引号的元素,只需在括号中填入你想要弹出的索引号即可:
1
2
3
4
5
bicycles = ['trek','specialized','giant','santa cruz']

poped_bicycle = bicycles.pop(2)
print(bicycles)
print('I have bought ' + poped_bicycle)
输出结果:
1
2
['trek', 'specialized', 'santa cruz']
I have bought giant
### 3. 组织列表 当我们拿到手一个list,有强迫症的人肯定想做点什么,比如按首字母顺序重新排一下之类的,但是如果真的手动一个一个重新排列的话那岂不是要做到明年去了...Python的动人之处就在于它有各种各样的库,各种各样的函数来简化我们的操作 #### 我有几辆买不起的车? 虽然我知道我挺穷的,但我还是想知道有多少牌子的山地车是我买不起的,这时候我们就可以用len()来确定一下list的长度。 注意,len()只能确定某一个list有多少元素,而listA中如果还套着一个listB的话,listB中元素的个数是不被计算的,只会把listB当做整个元素看待
1
2
3
4
5
other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

print(len(other))
print(len(bicycles))
输出结果:
1
2
3
5
#### 把我买不起的车排一下序 虽然咱买不起,但总得看着顺眼吧,来排排序? ##### 永久性排序 使用sort()可以轻松对一个list按照首字母顺序进行排序
1
2
3
4
bicycles = ['trek','specialized','giant','santa cruz']

bicycles.sort(reverse = False)
print(bicycles)
输出结果:
1
['giant', 'santa cruz', 'specialized', 'trek']
我们成功地排序了这一组list,然而,这个reverse = False是什么意思?查了下词典,reverse的意思是颠倒,那么显然,reverse = False意为不颠倒字母顺序,如果我们要按相反的字母顺序排序的话,sort()中的参数就应该为reverse = True ##### 临时性排序 这些车毕竟买不起,看看就行了,看完了还得给人家放回去,那么如何临时‘看一看’,看完了还能‘放回去’呢?就得请出sorted()来帮忙了
1
2
3
4
5
bicycles = ['trek','specialized','giant','santa cruz']

print(bicycles)
print(sorted(bicycles))
print(bicycles)
输出结果:
1
2
3
['trek', 'specialized', 'giant', 'santa cruz']
['giant', 'santa cruz', 'specialized', 'trek']
['trek', 'specialized', 'giant', 'santa cruz']
看到没,我只看看,不买,给您还回去了(捂脸.jpg #### 倒着打印 我想玩点花的,我想倒着把我买不起的车子的名字打印出来,但是又懒得一个一个颠倒,有啥办法吗?reverse()就是干这个事的
1
2
3
4
5
bicycles = ['trek','specialized','giant','santa cruz']

print(bicycles)
bicycles.reverse()
print(bicycles)
输出结果:
1
2
['trek', 'specialized', 'giant', 'santa cruz']
['santa cruz', 'giant', 'specialized', 'trek']

作者

Hank.Gan

发布于

2020-02-05

更新于

2021-08-05

许可协议

评论