文章目录
《python编程 从入门到实践》(Eric Matthes)读书笔记 2020.8
语法基于python3
变量
变量名
变量名只能包含字母、数字和下划线,不能以数字打头,不能包含空格(以下划线替代),不能使用python保留的关键字和函数名(如print)。
变量名应既简短又具有描述性,慎用小写字母l和大写字母O。
字符串
用引号括起的是字符串,可以是单引号也可以是双引号。
显示方法
仅按指定方法显示,未修改字符串的值。
name = "ada lovelace"
# 以首字母大写方式显示
print(name.title())
# 全部大写显示
print(name.upper())
# 全部小写显示
print(name.lower())
合并字符串
直接使用加号(+)拼接
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
空白
添加制表符:\t;添加换行符:\n。
删除空白方法(不存回变量中的话仅显示删除,实际未删除):
# 终端运行示例
>>> language = ' python '
>>> language
' python '
>>> language.rstrip()
' python'
>>> language
' python '
>>> language = language.rstrip()
>>> language
' python'
# 删除行尾空白
language = language.rstrip()
# 删除行首空白
language = language.lstrip()
# 同时删除两端的空白
language = language.strip()
字符串格式化
格式化符号类似c,字符串与值(可以是变量或常量)之间用%连接。不止一个值时用小括号括起,值与值之间用逗号隔开。
%c:字符及ASCII码;%d:整数;%s:字符串,%f:浮点数。
for i in range(1, 11):
name = "right%d.jpg" % i
print ("My name is %s and weight is %d kg!" % ('Zara', 21))
数字
整数
加(+),减(-),乘(*),除( / ),乘方(**),可使用括号改变优先级。空格不影响python计算表达式的方式。
注:python3整数除法根据结果可以得到小数,python2只得到商(整数),抛弃余数。
浮点数
浮点数包含的小数位数可能是不确定的,如
>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004
数值转化为字符串:str()
str():将非字符串值表示为字符串。直接将整数和字符串拼接会产生类型错误。
age = 23
message = "Happy " + str(age) + "rd Birthday!"
列表
列表由一系列按特定顺序排列的元素组成。用方括号([ ])表示列表,并用逗号分隔其中的元素。
>>> bicycle = ['trek','canondale','redline','specialized']
访问列表元素
指出列表名称,将元素索引放在方括号内。
>>> print(bicycle[0])
trek
正向索引从0开始,负向索引从-1开始(索引指定为-1,返回最后一个元素,-2、-3以此类推)。
修改列表元素
指定列表名、索引和新值。
motorcycles = ['honda','yamaha','suzuki']
motorcycles[0] = 'ducati'
向列表中添加元素
append()方法:在列表末尾添加元素。
上一示例中创建的列表也可按如下方法动态创建。
motorbycles = []
motorbycles.append('honda')
motorbycles.append('yamaha')
motorbycles.append('suzuki')
向列表中插入元素
insert()方法:指定新元素的索引和值,插入元素。
>>> motorcycles = ['honda','yamaha','suzuki']
>>> motorcycles.insert(0,'ducati')
>>> print(motorcycles)
['ducati','honda','yamaha','suzuki']
从列表中删除元素
del语句:根据位置删除元素。
>>> motorcycles = ['honda','yamaha','suzuki']
>>> del motorcycles[0]
>>> print(motorcycles)
['yamaha','suzuki']
pop()方法:弹出列表中的元素。参数为空时默认弹出列表末尾的元素,参数不为空时为弹出元素的索引,e.g.motorcycles.pop(0)
弹出列表的第一个元素。
>>> motorcycles = ['honda','yamaha','suzuki']
>>> popped_motorcycle = motorcycles.pop()
>>> print(mortorcycles)
['honda','yamaha']
>>> print(popped_motorcycle)
suzukire
move()方法:根据值删除元素。
>>> motorcycles = ['honda','yamaha','suzuki','ducati']
>>> motorcycles.remove('ducati')
>>> print(mortorcycles)
['honda','yamaha','suzuki']
注意:方法remove()只删除第一个指定的值,如果要删除的值可能在列表中出现多次,需要使用循环来判断是否删除了所有这样的值。
对列表排序
sort()方法:对列表进行永久性排序。
# 假设列表中所有元素都是小写
>>> cars = ['bmw','audi','toyota','subaru']
>>> cars.sort()
>>> print(cars)
['audi','bmw','subaru','toyota']
按相反顺序排列元素:传递参数reverse=True
。
>>> arr = [3, 8, 2, 9, 6, 5, 3]
>>> arr.sort(reverse=True)
>>> print(arr)
[9, 8, 6, 5, 3, 3, 2]
sorted()方法:对列表进行临时排序。保留列表原来的排列顺序,只是以特定的顺序呈现。降序也可指定参数reverse=True
。
翻转列表
reverse()方法:反转列表元素的排列顺序。永久性地修改列表元素,但可通过再次调用reverse()随时恢复。
获取列表长度
len()方法:快速获得列表长度。python计算列表长度从1开始。
>>> cars = ['bmw','audi','toyota','subaru']
>>> len(cars)
4
使用for循环遍历列表
magicians = ['alice','david','carolina']
for magician in magicians:
print(magician)
# 输出:
alice
david
carolina
for语句末记得加冒号。
数字列表
range()方法:生成一系列数字。从指定的第一个值开始,在到达指定的第二个值后停止(不包含第二个数)。
# 只输出1-4
for value in range(1,5):
print(value)
list()方法:直接将range()的结果转换为列表。
>>> numbers = list(range(1,6))
>>> print(numbers)
[1, 2, 3, 4, 5]
range()可以传入第三个参数指定步长。
>>> even_numbers = list(range(2,11,2))
>>> print(even_numbers)
[2, 4, 6, 8, 10]
max()/min()/sum()方法:求出数字列表的最大值/最小值/总和。
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> max(digits)
9
>>> min(digits)
0
>>> sum(digits)
45
列表解析
>>> square = [value**2 for valua in range(1,11)]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
切片
处理列表的部分元素称为切片。
创建切片:指定要是用的第一个元素的索引和最后一个元素的索引加一。与range()一样,python在到达指定的第二个索引前面的元素后停止。起始索引和终止索引间用冒号(:)连接。
如果没有指定第一个索引,将自动从列表开头开始;没有指定终止索引,切片将终止于列表末尾。
# 获取列表最后两个元素
>>> players = ['charles','martina','michael','eli']
>>> print(players[-2:])
['micheal','eli']
在for循环中使用切片可以遍历切片。
通过省略起始索引和终止的切片可以复制列表。复制列表将得到两个列表,直接用“=”赋值只是将第二个变量名指向同一个列表。
my_food = ['pizza','falafel','carrot cake']
# 复制列表
friend_food = my_food[:]
# 两个变量名指向同一个列表
friend_food = my_food
元组
值不能修改的列表称为元组。元组类似列表,使用圆括号而不是方括号。
访问和遍历元组的操作与列表相同。不能修改元组的元素,但可以给存储元组的变量赋值。如果要修改元组元素,即重新定义整个元组。
元组是比列表更简单的数据结构,如果需要存储的一组值在程序的整个生命周期内都不可变,可使用元组。
字典
字典是放在花括号{}中的一系列键-值对,键和值之间用冒号分隔,键-值对之间用逗号分隔。
alien_0 = {'color':'green','points':5}
# 多行字典
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
访问字典中的值
获取与键相关联的值,可依次指定字典名和放在方括号内的键。
>>> print(alien_0['color'])
green
添加键-值对
字典是一种动态结构,可依次指定字典名、用方括号括起的值和相关联的值添加键-值对。
alien_0 = {'color': 'green', 'points': 5}
pass
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
# 输出
{'color':'green','points':5,'x_position':0,'y_position':25}
注:直接将定义和赋值代码写为一个file会提示“This dictionary creation could be rewritten as a dictionary literal ”,在定义字典之后立刻添加新值会提示你可以在定义时直接写入字典,不想看到这个提示就在定义和添加新值之间加个pass。
键-值对的排列顺序可能与添加顺序不同。字典不关心键-值对的添加顺序,而只关心键和值之间的对应关系。不确定键-值对的值时可用空大括号代表值暂为空。
定义空字典
使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常都需要先定义一个空字典。
# 定义空字典的两种方法
alien_0 = {}
alien_0 = dict()
修改字典中的值
依次指定字典名、用方括号括起的键以及与键相关的新值。
alien_0 = {'color':'green'}
alien_0['color'] = 'yellow'
删除键-值对
del语句:指定字典名和要删除的键。
alien_0 = {'color': 'green', 'points': 5}
del alien_0['points']
遍历字典
items()方法:遍历所有键-值对。
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key,value in user_0.items():
print("\nKey: " + key)
print("Value: " + value)
# 输出:
Key: username
Value: efermi
Key: first
Value: enrico
Key: last
Value: fermi
keys()方法:遍历字典中的所有键。遍历字典时会默认遍历所有键。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
# 以下两种写法等效
for name in favorite_languages.keys():
pass
for name in favorite_languages:
pass
# key()方法返回一个列表
if 'erin' not in favorite_languages,key():
print("Erin, please take our poll!")
# 按顺序遍历字典中的所有键
for name in sorted(favorite_languages.key()):
pass
values()方法:遍历字典中的所有值,返回一个值列表。
# 为剔除重复项,可以使用集合
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
print(language.title())
将字典存储在列表中,或将列表存储在字典中,称为嵌套。