Python基础学习

写在前面

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

变量和两种简单数据类型

和学习C语言时一样,上来先得学的是数据类型和变量( 其实学C的时候开始老师先讲了编译原理)

1. 变量

  • 变量名只能包含字母、数字和下划线。变量名可以字母或者下划线开头,但不能以数字开头
  • 变量名不能包含空格,一般用下划线代替空格
  • 不要把Python的关键字和函数名当做变量名
  • 慎用I和O,因为容易被看成数字1和0 ( 这点确实特别重要hhhh )
    易错点:
 message = 'Wellcome to the World of Python!'
 print(mesage)
 #哈哈,日常拼写错误,通假字从古至今从未断绝

2. 字符串string

字符串顾名思义就是一串字符,Python中引用字符串的引号可以是单引号也可以是双引号

a. 转义符

在转义符上,Python和C是类似的,因此不作过多解释,只丢几个最基本的在这里

print('Hello World!\n?????')
#这里的\n是换行
print('Hello World!\r What?')
#这里的\r是回车(光标回到起点)

上面两个转义符的效果如下:

换行转义符'\n'输出效果
Hello World!
?????
回车转义符'\r'输出效果
What? World!
b. 字符串相关函数
title()
title函数用于规整字符串使其符合一般文章标题要求(各个单词**首字母大写**)
name = 'hank gan'
print(name.title())

输出结果:

Hank Gan
upper()lower()

upper函数用于将单词的每个字母转化为大写
lower函数用于将单词的每个字母转化为小写

name = 'Hank Gan'
print(name.upper())
print(name.lower())

输出结果:

HANK GAN
hank gan
合并/拼接字符串

利用+来拼接不同字符串,使其成为一个新的字符串

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能够打印更多信息,输出结果:

Hello Hank Gan, Wellcome to the World of Python! 
对字符串中空格的操作

在我们或者其他用户向字符串中输入值时,不可避免的会存在输入空格的情况,但有的时候我们的程序在操作过程中不需要这些多余的空格,这时候就需要Python自带的字符串函数来帮忙。
rstrip()lstrip()strip()
strip是“剔去”的意思,“r”和“l”分别代表左和右,那么这三个函数的作用就通俗易懂了,它们分别是剔除字符串左边、右边、左右两边空格的函数,下面是个小例子:

learning = "   Python   "

print(learning.lstrip())
print(learning.rstrip())
print(learning.strip())

输出结果:

Python   
   Python
Python

联想到在转义符那一部分学过的制表符"\t",如果将它与上述删除函数结合起来使用的话,就能轻易改变字符串中的空格了

3. 布尔值/Boolean

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

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运算值为取反
运算结果为:

False
True
True

列表型数据类型list

列表由一系列按特定顺序排列的元素组成,它可以包括字符串、数字,也可以包括其他列表等等数据类型。
在Python中,用方括号[]来表示列表,并用逗号,来分隔其中的元素,例如,用list中套娃list (禁止套娃) 的方式表示出以下几个买不起的山地车品牌:

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

1. 访问list的方法

a. 正向索引

和C语言中的数组一样,通过索引访问list时,索引号是从0开始的,也就意味着整个list的索引号应该是list中元素数目-1
同时,list中的元素若为字符串的话,也可以用上述字符串的各种处理方法来对其进行处理:

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.')

输出结果:

giant
I can not afford a Santa Cruz mountain bike.
b. 反向索引

如果当一个list中的元素过多,我们想取倒数第一个或者第二个,而不想输入太大的索引号(比如bicycles[9999]这种)的时候,也可以用负数来索引list:

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])

输出结果:

cannondale
cannondale
santa cruz
santa cruz

对照着list的各个元素索引号就很好理解上述两种索引方式

2. 修改、添加和删除list中的元素

list区别于tuple(后面会写到)的一大区别就是list可以修改,而tuple在定义后就不能够更改了,所以如何修改、添加和删除list中的元素是学习list基础时重点需要掌握的内容。

a. 修改list中的元素

修改list中的元素其实很简单,甚至不需要函数来操作,重新定义你想要修改的元素就行了

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

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

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

DARTMOOR
b. 向list中添加元素
在list末尾添加元素

可能这几天我又穷了,连美利达都买不起了,昂贵的自行车品牌中又要添加新成员了怎么办,append()函数可以解决这个问题!

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles.append('merida')
print('Gosh, I can not afford ' + bicycles[5].title() + ' now.')

穷了的结果:

Gosh, I can not afford Merida now.

除了能往list末尾添加元素,append()还有一个重要用法是用来动态地构建list:

bicycles = []  #首先定义一个需要被构建的list

bicycles.append('giant')
bicycles.append('trek')
bicycles.append('specialized')
...

这样的好处是,它可以根据我们的需要随意构建list,而不是在在写下方的代码时再回到一开始定义list的位置添加元素

在列表中插入元素

有的时候我们想在list中的某一个位置插入元素,而不是在末尾插入,这时候就需要insert()来帮忙了

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles.insert(0,'merida')
print(bicycles[0].title() + '\n' + bicycles[1].title())

输出结果:

Merida
Giant

可见,insert()的第一个参数是指你要把新元素插入到list中,新元素需要被安排的索引号x,插入后,原list在索引号x以后的元素索引号整体后移一位,新元素占据索引号x对应的list中的位置

c. 从列表中删除元素

今年收了数量可观的压岁钱,看来咱应该是买得起一辆Giant Reign了,那如何删除列表里的Giant呢?
在这里插入图片描述

知道是第几个元素

如果知道要删除的元素在list中的索引号,那么我们常用del语句来删除元素

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

del bicycles[0]
print(bicycles)

有钱了的结果:

['trek', 'specialized', ['canyon', 'commencal', 'santa cruz'], 'cannondale']

可见,我们成功删掉了Giant!(确信

知道这个元素是什么

如果我们知道这个元素是什么,那么我们常用remove()来删除元素

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

bicycles.remove('giant')
print(bicycles)

除此之外,我们还可以利用字符串的定义,来更进一步地利用remove()删掉我们想删掉的内容

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!')

输出结果:

['trek', 'specialized', ['canyon', 'commencal', 'santa cruz'], 'cannondale']
Giant is not in this list because I have bought it!

显然,这样删除Giant更清晰,因为我把删除它的原因也表示出来了,因为我买了它

虽然要删一个元素,这个元素也想留着

这是什么奇葩要求…离开的就让它离开好嘛,不要再怀念了
但其实也是做得到的,使用pop()可以在删除某一元素的同时,存储下被删除的这一个元素
这时候的list就像一个,而删除list末尾的元素相当于弹出栈顶元素
所以,pop()被称为“删除函数”是有些不恰当的,应该叫做“弹出函数”才对

bicycles = ['trek','specialized','santa cruz','giant']
print(bicycles)

poped_bicycle = bicycles.pop()
print(bicycles)
print('I have bought ' + poped_bicycle)

输出结果:

['trek', 'specialized', 'santa cruz', 'giant']
['trek', 'specialized', 'santa cruz']
I have bought giant

可见,它把被删除的元素保留在了poped_bicycles中,我们仍能访问它
其实,pop()可以弹出任意一个你知道索引号的元素,只需在括号中填入你想要弹出的索引号即可:

bicycles = ['trek','specialized','giant','santa cruz']

poped_bicycle = bicycles.pop(2)
print(bicycles)
print('I have bought ' + poped_bicycle)

输出结果:

['trek', 'specialized', 'santa cruz']
I have bought giant

3. 组织列表

当我们拿到手一个list,有强迫症的人肯定想做点什么,比如按首字母顺序重新排一下之类的,但是如果真的手动一个一个重新排列的话那岂不是要做到明年去了…Python的动人之处就在于它有各种各样的库,各种各样的函数来简化我们的操作

我有几辆买不起的车?

虽然我知道我挺穷的,但我还是想知道有多少牌子的山地车是我买不起的,这时候我们就可以用len()来确定一下list的长度。
注意,len()只能确定某一个list有多少元素,而listA中如果还套着一个listB的话,listB中元素的个数是不被计算的,只会把listB当做整个元素看待

other = ['canyon','commencal','santa cruz']
bicycles = ['giant','trek','specialized',other,'cannondale']

print(len(other))
print(len(bicycles))

输出结果:

3
5
把我买不起的车排一下序

虽然咱买不起,但总得看着顺眼吧,来排排序?

永久性排序

使用sort()可以轻松对一个list按照首字母顺序进行排序

bicycles = ['trek','specialized','giant','santa cruz']

bicycles.sort(reverse = False)
print(bicycles)

输出结果:

['giant', 'santa cruz', 'specialized', 'trek']

我们成功地排序了这一组list,然而,这个reverse = False是什么意思?查了下词典,reverse的意思是颠倒,那么显然,reverse = False意为不颠倒字母顺序,如果我们要按相反的字母顺序排序的话,sort()中的参数就应该为reverse = True

临时性排序

这些车毕竟买不起,看看就行了,看完了还得给人家放回去,那么如何临时‘看一看’,看完了还能‘放回去’呢?就得请出sorted()来帮忙了

bicycles = ['trek','specialized','giant','santa cruz']

print(bicycles)
print(sorted(bicycles))
print(bicycles)

输出结果:

['trek', 'specialized', 'giant', 'santa cruz']
['giant', 'santa cruz', 'specialized', 'trek']
['trek', 'specialized', 'giant', 'santa cruz']

看到没,我只看看,不买,给您还回去了(捂脸.jpg

倒着打印

我想玩点花的,我想倒着把我买不起的车子的名字打印出来,但是又懒得一个一个颠倒,有啥办法吗?reverse()就是干这个事的

bicycles = ['trek','specialized','giant','santa cruz']

print(bicycles)
bicycles.reverse()
print(bicycles)

输出结果:

['trek', 'specialized', 'giant', 'santa cruz']
['santa cruz', 'giant', 'specialized', 'trek']
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值