1、while循环和for循环
while 真值表达式1:
语句块1
else:
语句块2
执行流程:先判断真值表达式,True进语句块1,完了之后继续判断真值表达式1
直到真值表达式为False,执行一遍else里的内容,结束while语句
注意循环变量的自增和自减即可
2、break语句
终止上一层循环
3、for语句用于遍历序列或者迭代对象的每一个元素
可迭代对象:指能够依次获取数据的对象,包括字符串str、列表list、元组tuple、字典dict、集合set、range等
语法格式:
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
解释:可迭代对象的每一个元素对象依次赋给列表中的变量,赋值完毕后执行语句块1
所有元素都赋值过后,执行else;如果使用了break跳出循环,else语句不会继续执行
4、range函数
for i in range(5): i是从0到4(包含4)
for i in range(5,9): i是从5到8(包含8)
for i in range(1,9,2): i的增量是2,所以i的值为:1 3 5 7
for i in range(9,1,-2): i的值依次为9,7,5,3
5、一个很好的练习题:
用for循环生成一个字符串"ABCD...XYZ",并打印。
代码:
i = str()
for c in range(ord('A'),ord('Z')+1):
i += str(chr(c))
print("%s"%i)
6、练习题:输入Unicode的begin值和end值,按表格形式打印这个区间内的Unicode的十进制、十六进制、对应字符
str1 = input("please input Unicode1: ")
str2 = input("please input Unicode2: ")
begin = int(str1)
end = int(str2)
print("%s"%"10jinzhi".center(15),end = '|')
print("%s"%"16jinzhi".center(15),end = '|')
print("%s"%"char".center(15),end = '|\n')
for i in range(begin,end+1):
print("%s"%str(i).center(15),end = '|')
print("%s"%hex(i).center(15),end = '|')
print("%s"%str(chr(i)).center(15),end = '|\n')
运行结果:
please input Unicode1: 45
please input Unicode2: 53
10jinzhi | 16jinzhi | char |
45 | 0x2d | - |
46 | 0x2e | . |
47 | 0x2f | / |
48 | 0x30 | 0 |
49 | 0x31 | 1 |
50 | 0x32 | 2 |
51 | 0x33 | 3 |
52 | 0x34 | 4 |
53 | 0x35 | 5 |
7、continue语句
和c语言一样
8、列表list
一个长度可变的容器,其数据类型可以不一致
比如[1,3,4,[23,424],"qweqwe",1+2j]
声明一个列表 l = [10,2,3]
构造函数list():
list() 返回空列表
list(interable,即可迭代对象,如str,range) 用所给interable产生一个list
比如:list(range(10,1,-2)) = [10, 8, 6, 4, 2]
list("list("abcdefg")) = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
9、列表的运算
+:两个list合并
+=:两个list合并
*:相当于多个加法,只能乘int,不能乘list;乘以负数,得到空列表
*=:同上
规则和字符串一样
10、列表的比较
< <= > >= == !=
比较规则:从前向后比较每一个元素,完全相同则相等
如果一个列表比另一个长,那么短的那个列表比较时,空缺的部分值为-∞
["abc",1,2] > ["123",1,2]因为字符串"abc">"123"
但是["abc",1]>[1,2]执行时会出错,因为无法比较
11、list的in和not in运算符
判断元素是否在list中
例子:'a' in ['a',1,2,3] = True
然而:'a' in [1,2,['a','b']] = False
12、list列表的索引与切片
和字符串一样
索引和c的数组完全一样
切片的结果还是列表list
列表的切片是可以赋值的:l[1:3] = [1,2],此时还是可以倒着赋值
切出一个长度为0的“缝”,还可以给某个位置插入一些数据
13、del删除列表元素
del L[-1]删除编号为-1即最后一个元素
del L[0]删除编号为0的元素,即第一个元素
del L[::2]删除切片出来的元素,这个语句将删除L中0,2,4,6...这些元素
14、list列表相关的函数
len(L)
max(L)
min(L)
sum(L) 列表元素求和,必须是数值型列表
any(L) 列表中有一个元素bool值为真则返回真
all(L) 列表中所有元素都为真则为真
15、list列表常用方法(method)
L.index(x[,begin[,end]]) 找到第一个值为x的列表元素返回下标
begin为开始,end为结束,默认为list开头和结尾,找不到产生错误
L.insert(index,obj) 在index下标处插入obj,之后元素后移,负下标依然起作用
L.count(x) 数列表中元素x的个数
L.remove(x) 删除列表中第一次出现该值的元素
L.append() 向列表追加一个元素
L.extend(List) 向列表插入另一个列表,和+=不同的是,该操作不会进行内存复制,只是在L基础上追加
注意:L.extend([1,2,3])会将1,2,3分别作为一个单独元素加入到L后面,但是append([1,2,3])将[1,2,3]作为一个元素加入L之后
L.clear() 清空列表,即L=[]
对列表的赋值操作是引用赋值,两个变量关联的还是同一个内存区域,用L.copy()做一个拷贝
L.sort(reverse = Flase) 排序,默认顺序从小到大
L.reverse() 列表反转,和切片不同的是,不用内存复制
L.pop([index]) 删除index下标处对应的元素,缺省删除最后一个,返回被pop对象的引用
16、深拷贝和浅拷贝
浅拷贝指在拷贝时只拷贝对象的引用关系,不拷贝关联的对象
深拷贝指连同关联的对象一起拷贝,用
import copy
copy.deepcopy(L1)进行深拷贝
17、列表和字符串比较
列表和字符串都是可迭代对象、有序序列
列表元素可以是任意元素,字符串元素只能是字符
字符串相对来说的不可变对象,而序列则是可变对象
18、字符串文本解析方法split()和join()
str.split(sep=None,maxsplit=-1) 将字符串以sep为界限分割成若干字符串,以列表形式返回。如果未给定sep,则以空白符为界限
str.join(iterable) 举个例子:L=['aa','a','3'] "##".join(L) = 'aa##a##3'
举例一个应用:
path = ['C:','usr','WilliamCode']
"\\".join(path) = 'C\\usr\\WilliamCode' #其中\\是转义字符,用于生成路径