这是本人学习Python编程从入门到实践(第2版)个人学习笔记,书本如下
目录
一、变量和简单数据类型
1.1字符串和数
1.1.1字符串部分方法的使用
注意:同元组一样,字符串是一个:无法修改的数据容器。
①方法title()以首字母大写的方式显示每个单词;方法upper()和方法lower()将字符改为全部大写或全部小写。
name = "ada loveace"
print(name.title())
print(name.upper())
print(name.lower())
运行结果为
Ada Loveace
ADA LOVEACE
ada loveace
②取特定字符的索引
name = "ada loveace"
print(name.index("l"))
运行结果:
4
③通过下标索引取值
name = "ada loveace"
print(name[2])
运行结果:
a
④字符串的分割
name = "ada loveace hello world"
temp = name.split(" ")
print(temp)
运行结果:
['ada', 'loveace', 'hello', 'world']
1.1.2 f 字符串的用法
在字符串中使用变量
first_name = "ada"
last_name = "lovelace"
fullname = f"{first_name} {last_name}"
print(fullname)
运行结果为
ada lovelace
f字符串的其他用法
first_name = "ada"
last_name = "lovelace"
fullname = f"{first_name} {last_name}"
print(f"Hello,{fullname.title()}!")
运行结果
Hello,Ada Lovelace!
1.1.3删除空白
rstrip()方法删除字符串末尾多余的空白;lstrip()方法删除字符串开头多余的空白;strip()方法删除字符串开头和末尾多余的空白(或指定值 );
favorite_language = ' Python '
print(favorite_language.strip())
运行结果
Python
1.1.4数中的下划线
favorite_num = 100_450_100
print(favorite_num)
运行结果
100450100
1.1.5同时给多个变量赋值
x, y, z = 1, 2, 0
print(f"{x} + {y}")
运行结果
1 + 2
二、列表简介
2.1列表(list)
2.1.1概念引入
在Python中,用方括号[]表示为列表,并用逗号分隔其中的元素。
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
print(bicycles)
运行结果
['trek', 'cannondable', 'redline', 'specialized']
2.1.2访问列表元素
可采用索引的方式进行访问,索引是从0开始的,返回元素不包含方括号
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[-1])
print(bicycles[-2])
print(bicycles[1].title())
运行结果
cannondable
specialized
redline
Cannondable
2.1.3查找某元素的下标(index方法)
功能:查找指定元素在列表中的下标,如果找不到,报错ValueError
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
index = bicycles.index('redline')
print(index)
运行结果
2
2.2修改、添加和删除元素
2.2.1修改列表元素
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles[1] = 'hello'
print(bicycles)
运行结果
['trek', 'hello', 'redline', 'specialized']
2.2.2在列表中添加元素
在列表末尾添加单个元素
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles.append('hello world')
print(bicycles)
运行结果
['trek', 'cannondable', 'redline', 'specialized', 'hello world']
在列表末尾添加多项元素
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
car = ["audi", "BYD"]
bicycles.extend(car)
print(bicycles)
运行结果
['trek', 'cannondable', 'redline', 'specialized', 'audi', 'BYD']
在列表中插入元素
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles.insert(1, 'hello')
print(bicycles)
运行结果
['trek', 'hello', 'cannondable', 'redline', 'specialized']
2.2.3在列表中删除元素
使用 del 语句删除元素
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
del bicycles[0]
print(bicycles)
运行结果如下
['cannondable', 'redline', 'specialized']
使用 pop() 方法删除元素
方法pop() 删除列表末尾的元素,并让你能够接着使用它。
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
pop_bicycles = bicycles.pop()
print(bicycles)
print(pop_bicycles)
运行结果
['trek', 'cannondable', 'redline']
specialized
使用pop()方法弹出列表中任何位置的元素
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
pop_bicycles = bicycles.pop(2)
print(bicycles)
print(pop_bicycles)
运行结果
['trek', 'cannondable', 'specialized']
redline
当然,别忘了,当使用pop()时,被弹出的元素就不在列表中了。
根据值删除列表元素
如果只知道眼删除列表元素的值,可以用方法remove()
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles.remove('redline')
print(bicycles)
运行结果
['trek', 'cannondable', 'specialized']
注意:方法 remove() 只删除第一个指定的值。
2.3组织列表
2.3.1使用sort()方法对列表永久排序
按字母顺序排列
cars = ['bwm', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
cars.sort(reverse=True) # 字母反序
print(cars)
运行结果
['audi', 'bwm', 'subaru', 'toyota']
['toyota', 'subaru', 'bwm', 'audi']
2.3.2使用函数sorted() 对列表临时排序
cars = ['bwm', 'audi', 'toyota', 'subaru']
print('Here is the original list: ')
print(cars)
print('Here is the sorted list: ')
print(sorted(cars))
print('Here is the original list: ')
print(cars)
运行结果
Here is the original list:
['bwm', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bwm', 'subaru', 'toyota']
Here is the original list:
['bwm', 'audi', 'toyota', 'subaru']
2.3.3倒着打印列表
可使用方法 reverse() 反转列表元素的排列顺序
cars = ['bwm', 'audi', 'toyota', 'subaru']
print('Here is the original list: ')
print(cars)
print('Here is the reverse list: ')
cars.reverse()
print(cars)
运行结果
Here is the original list:
['bwm', 'audi', 'toyota', 'subaru']
Here is the reverse list:
['subaru', 'toyota', 'audi', 'bwm']
2.4操作列表
2.4.1遍历列表
采用for 循环遍历列表
cars = ['bwm', 'audi', 'toyota', 'subaru']
for car in cars:
print(f'My favorite car is {car}')
print('END!')
运行结果
My favorite car is bwm
My favorite car is audi
My favorite car is toyota
My favorite car is subaru
END!
采用while循环遍历列表
bicycles = ['trek', 'cannondable', 'redline', 'specialized']
index = 0
while index < len(bicycles):
print(bicycles[index])
index += 1
运行结果:
trek
cannondable
redline
specialized
2.4.2创建数值列表
使用range() 函数
for value in range(1, 5):
print(value)
运行结果:
1
2
3
4
可见,并没有输出5。故 range(a, b) 函数中只会取值 [a, b)
使用range() 函数创建数字列表,并进行简单统计
# 默认步长为1
numbers1 = list(range(1, 5))
print(numbers1)
# 步长自定义
numbers2 = list(range(1, 10, 2))
print(numbers2)
print(min(numbers2))
print(max(numbers2))
print(sum(numbers2))
运行结果
[1, 2, 3, 4]
[1, 3, 5, 7, 9]
1
9
25
2.4.3列表解析
方括号中首先定义一个表达式,然后编写一个for 循环给表达式赋值
squares = [value**2 for value in range(1, 10)]
print(squares)
运行结果
[1, 4, 9, 16, 25, 36, 49, 64, 81]
2.4.4切片
切片示意
player = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE']
print(player[1:4])
print(player[:4])
print(player[1:])
print(player[-2:])
运行结果
['BBB', 'CCC', 'DDD']
['AAA', 'BBB', 'CCC', 'DDD']
['BBB', 'CCC', 'DDD', 'EEE']
['DDD', 'EEE']
遍历切片
players = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE']
for player in players[1:]:
print(player)
运行结果
BBB
CCC
DDD
EEE
2.4.5复制列表
首先,让我们来看一下错误做法
# 将my_color列表复制给your_color列表的错误做法
my_color = ['red', 'yellow', 'blue']
your_color = my_color
print(your_color)
运行结果
['red', 'yellow', 'blue']
看起来好像没什么问题,我们对上述程序进行简单测试:
# 将my_color列表复制给your_color列表的错误做法
my_color = ['red', 'yellow', 'blue']
your_color = my_color
print(your_color)
# 对my_color列表进行简单修改,弹出列表最后一个元素
my_color.pop()
# 分别打印出my_color和your_color列表
print(my_color)
print(your_color)
运行结果如下,我们发现,对my_color列表进行修改,your_color列表也随之改变
['red', 'yellow', 'blue']
['red', 'yellow']
['red', 'yellow']
显然,对于your_color = my_color,是将my_color赋给your_color,而不是将my_color的副本赋给your_color。即原理如下所示,这两个变量指向同一个列表:
那如何正确进行列表的复制呢?可采用切片表示法[ : ]创建列表的副本
# 将my_color列表复制给your_color列表的正确做法
my_color = ['red', 'yellow', 'blue']
your_color = my_color[:]
print(your_color)
# 对my_color列表进行简单修改,弹出列表最后一个元素
my_color.pop()
# 分别打印出my_color和your_color列表
print(my_color)
print(your_color)
打印输出结果如下
['red', 'yellow', 'blue']
['red', 'yellow']
['red', 'yellow', 'blue']
结果表明,对my_color列表进行修改,不影响your_color列表,这里是将my_color的副本赋给your_color。即原理如下所示,这两个变量分别指向两个列表:
2.5元组(tuple)
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
定义元组,元组看起来很像列表,但使用圆括号而非中括号来标识。可以使用索引访问元组元素。
dimensions = (200, 50)
print(dimensions[1])
# 对元组重新赋值
dimensions = (300, 100)
print(dimensions[1])
运行结果
50
100
2.6集合 (set)
为什么需要学习集合这一类型,因为,列表可修改、支持重复元素有序;元组、字符串不可修改支持重复元素有序。如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。而集合,最主要的特点就是不支持元素的重复,并且内容无序(顺序无法保证,不支持下标索引访问)。定义空集合只能用set(),不可以用{},{}是定义空字典的。
# 定义集合
my_set = {"hello", "world", "audi", "BYD","hello", "world", "audi", "BYD"}
my_empty_set = set() # 定义空集合
print(f"my_set的内容是:{my_set},类型是:{type(my_set)}")
print(f"my_set的内容是:{my_empty_set},类型是:{type(my_empty_set)}")
运行结果:
my_set的内容是:{'hello', 'BYD', 'world', 'audi'},类型是:<class 'set'>
my_set的内容是:set(),类型是:<class