《Python从入门到实践》2-7章
第二章: 变量
1.变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头
变量名不能包含空格,但可使用下划线来分隔其中的单词。
不要将Python关键字和函数名用作变量名
变量名应既简短又具有描述性。
慎用小写字母l和大写字母O
注意 就目前而言,应使用小写的Python变量名。
2.a.title()
title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写
.upper()
.lower()
字符串中添加制表符,可使用字符组合\t
字符串中添加换行符,可使用字符组合\n
3.删除空格:
lstrip()
rstrip()
strip()
要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中
favorite_language = 'python '
favorite_language = favorite_language.rstrip()
favorite_language
4.Python使用两个乘号表示乘方运算 **
在Python中,第一个列表元素的索引为0,而不是1。
第三章: 列表基础
方法append()将元素添加到了列表末尾
方法insert()可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。这种操作将列表中既有的每个元素都右移一个位置: insert(0,“hello”)
5.删除元素:
del语句删除元素 del a[0]
方法pop()可删除列表末尾的元素
使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop()。 b=a.pop(0)
如果你只知道要删除的元素的值,可使用方法remove()。(方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。)
6.列表排序:
方法sort()(永久性地修改了列表元素的排列顺序。现在,汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数reverse=True。即sort(reverse=True)
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。
print("\nHere is the sorted list:")
print(sorted(cars))
反转:要反转列表元素的排列顺序,可使用方法reverse()
reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序
第四章: 列表操作
用for遍历 注意缩进,python中缩进是语法!
函数range()让你能够轻松地生成一系列的数字 (前闭后开这里的前闭后开指最后一个取不到,要取的话后面的数字要多算1位)
使用函数range()时,还可指定步长。
range(2,11,2)
对于列表同样拥有:
min(),max(),sum()等函数
列表生成式:
[x for x in range(1,11)]
切片:前闭后开
如果没有指定起始索引,Python从列表开头开始提取,要让切片终止于列表末尾,也可使用类似的语法。
复制列表:[:]
Python将不能修改的值称为不可变的,而不可变的列表被称为元组
第五章 if语句
要判断特定的值是否已包含在列表中,可使用关键字in。
只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句。
第六章 字典
字典用放在花括号{}中的一系列键—值对表示
del语句将相应的键—值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
遍历字典:
for k,v in a.items():
遍历字典中所有的键: 方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键
for k in a.keys():
字典包含的值,可使用方法values(),它返回一个值列表
通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素
第七章 用户输入 while 循环
用户输入: input()
求模运算符(%):它将两个数相除并返回余数
要立即退出while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。
删除包含特定值的所有列表元素:
while 'cat' in pets:
pets.remove('cat')
Python 练习题:
1、列出python中可变数据类型和不可变数据类型,并简述原理
答:
可变数据类型:列表,字典,集合
不可变数据类型:元祖
老师答案:
不可变数据类型:数值型、字符串型string和元组tuple
不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址)
可变数据类型:列表list和字典dict;
允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
2、用lambda函数实现两个数相乘
from functools import reduce
reduce(lambda x,y:x*y,[1,2])
老师答案:
sum = lambda x,y:x*y
print(sum(4,5))
3、字典根据键从小到大排序dict={“name”:“zs”,“age”:18,“city”:“深圳”,“tel”:“1362626627”}
from collections import OrderedDict
dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
OrderedDict(sorted(dict.items(),key=lambda t:t[0]))
老师答案:
dict=sorted(dic.iteritems(),key=lambda d:d[0])
4、利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
from collections import Counter
s="kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
Counter(s)
5、字符串a = “not 404 found 张三 99 深圳”,每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
.join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
str = "-";
seq = ("a", "b", "c");
print str.join( seq )
a-b-c#输出结果
6、filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b=list(filter(lambda x:x%2==1,a))
老师答案:
a=[1,2,3,4]
def add(a):
return a%2==1
new_1=filter(add,a)
for i in new_1
7、列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
c=[x for x in a if x%2==1 ]
8、写代码,有如下变量,请按照要求实现每个功能
name = " aleX "
a.移除name变量对应的值两边的空格,并输入移除有的内容
b.判断name变量对应的值是否以 “al"开头,并输出结果
c.判断name变量对应的值是否以 “X"结尾,并输出结果
d.将name变量对应的值中的 " l” 替换为 " p”,并输出结果
e.将name变量对应的值根据 " l" 分割,并输出结果。
f.请问,上一题 e分割之后得到值是什么类型?
g.将name变量对应的值变大写,并输出结果
h.将name变量对应的值变小写,并输出结果
i.请输出name变量对应的值的第2个字符?
j.请输出name变量对应的值的前3个字符?
k.请输出name变量对应的值的后2个字符?
l.请输出name变量对应的值中 “e” 所在索引位置?
答:
a.name=name.strip()
b.name.startswith("al")
c.name.startswith("X",-1) 答案: name.endwith("X")
d.name.replace("l","p")
老师答案:
e.name.split("l")
f. 字符串!
g.name.upper()
h.name.lower()
i.name[2]
j.name[:3]
k.name[-2:]
i.name.find("e") 老师答案: for i in enumerate(name): if v=="e": print("e的索引是:%s,%i)
9.计算字符串中,关键字出现的次数。
s = "sdcasgqwaa"
s.count(a)
作业总结:
enumerate():该函数在字面上是枚举、列举的意思,用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,可同时得到数据对象的值及对应的索引值。
enumerate(sequence, [start=0])
sequence – 一个序列、迭代器或其他支持迭代对象。start – 下标起始位置。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three