一、复习
1.分支结构
if 的用法:
if 条件语句:
代码段
if - else 的用法:
if 条件语句:
代码段1
else:
代码段2
if - elif else 的用法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
······
else:
代码段4
2.循环结构
for - in 的用法:
for 变量 in 序列:
循环体
循环:字符串、range、列表、字典、元组、集合、迭代器、生成器
在 python3.x 的时候为:range();在 python2.x 的时候为:x.range();
while 的用法:
while 条件语句:
循环体
遍历序列、循环次数确定时,用 for 循环;
循环次数确定时,用 while 循环。
关键字:continue、break、else
coutinue:结束当前循环,进入下一次循环的判断;
break:结束整个循环;
else:循环正常死亡时,执行 else 里面的代码段
二、了解列表
1.什么是列表(list)
列表是python中提供的容器型数据类型,相对字符串更灵活。是 可变 并且 有序的 。
可变 -----列表中每个元素的值可变,列表长度可变,列表中元素顺序可变。(支持增加、删除、改变)
有序 -----列表中每个元素可以通过下标来确定元素的位置。
例如:
声明一个列表,可以保存公司所有员工的名字。
name = ['张三', '李四', '王五']
print(name)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/02、know list 12.29.py"
['张三', '李四', '王五']
2.列表的字面量:;
通过[]括起来,里面有多个元素,每个元素用逗号隔开:
[1, 2, 3, 'adc', True]
num = 100; [num, 200]
[] -----空列表。
注意:列表元素的类型可以为任何python中支持的数据类型;并且同一个列表中不同元素的类型可以不一样。
任何数据都可以作为列表中的元素:
例如:
list1 = [123, 4.56, 'adc', True, [1, 2, 3], {'name' : '阿黄'}, lambda x: 2 * x]
list2 = [
123,
4.56,
'adc',
True,
[1, 2, 3],
{'name' : '阿黄'},
lambda x: 2 * x
]
a = [1, 2, 3]
list3 = [a, 4]
print(list3)
运行效果:
[[1, 2, 3], 4]
2.获取列表元素(与字符串获取字符的语法一样)
a.获取单个元素:
列表[下标] -----获取列表中指定下标对应的元素。
例如:
list4 = [10, 20, 30, 40, 'adc']
print(list4[0], list4[-1])
运行效果:
10 adc
b.获取部分元素(切片): -----结果是列表。
列表[开始下标 : 结束下标 : 步长] -----取不到结束下标。
注意:取不到的时候,结果为空列表。
例如:
list5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list5[2: 4]) # [2, 3]
print(list5[1: 5: 2]) # [1, 3]
print(list5[2: -2: -1]) # []
print(list5[: 2]) # [0, 1]
print(list5[2:: -1]) # [2, 1, 0]
print(list5[:: -1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
运行效果:
[2, 3]
[1, 3]
[]
[0, 1]
[2, 1, 0]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
c.一个一个的取出所有的元素(遍历)
可以直接使用 for 循环直接遍历列表,拿到每个元素;(操作元素时与下标无关时)
也可以通过遍历下标,来拿到列表元素,再遍历。(操作元素时与下标有关时)
例如:
for i in list5:
print('列表第 %i 个元素为:' % i, i)
for i in range(len(list5)):
print('下标:', i)
print('里面的元素为:', list5[i])
运行效果:
列表第 0 个元素为: 0
列表第 1 个元素为: 1
列表第 2 个元素为: 2
列表第 3 个元素为: 3
列表第 4 个元素为: 4
列表第 5 个元素为: 5
列表第 6 个元素为: 6
列表第 7 个元素为: 7
列表第 8 个元素为: 8
列表第 9 个元素为: 9
下标: 0
里面的元素为: 0
下标: 1
里面的元素为: 1
下标: 2
里面的元素为: 2
下标: 3
里面的元素为: 3
下标: 4
里面的元素为: 4
下标: 5
里面的元素为: 5
下标: 6
里面的元素为: 6
下标: 7
里面的元素为: 7
下标: 8
里面的元素为: 8
下标: 9
里面的元素为: 9
练习:求整个班的平均成绩。
cj = [50, 60, 70, 80, 90, 100]
sum1 = 0
print('这个班的成绩为:', cj)
for i in range(len(cj)):
sum1 += cj[i]
print('这个班的平均成绩为:', sum1 / len(cj))
运行效果:
这个班的成绩为: [50, 60, 70, 80, 90, 100]
这个班的平均成绩为: 75.0
三、列表的增加、删除、修改
1.增加(添加列表元素):
a.append:
列表.append(元素) -----在指定的列表最后,添加指定的元素。
注意:不会产生新的列表,修改的是原列表。
例如:
list1 = ['0','1','2','3','4']
list1.append('5')
print(list1)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/03、add and delete and update 12.29.py"
['0', '1', '2', '3', '4', '5']
b.insert
列表.insert(下标, 元素) -----在指定的下标前,插入指定的元素。
例如:
list1.insert(3, '这是插入')
print(list1)
运行效果:
['0', '1', '2', '这是插入', '3', '4', '5']
2.删除(删除元素)
a.del -----python中的关键字,可以用它删除任何数据。
del 列表[下标] -----删除列表中指定下标所对应的元素,下标不能越界,不然会报错。
del list1[3]
print(list1)
运行效果:
['0', '1', '2', '3', '4', '5']
b.remove
列表.remove(元素) -----删除列表中指定的元素。
注意:若有多个相同,只删除第一个元素;要删除元素若不存在列表中,会报错。
c.pop
列表.pop() -----将列表中最后一个元素,在列表中取出。
列表.pop(下标) -----将列表中指定下标的元素,在列表中取出。
注意:与 del 和 remove 不同,虽然已经不在列表里面,但是可以保存在内存里面。
例如:
str1 = list1.pop()
print(str1, list1)
list1.pop(0)
print(list1)
运行效果:
5 ['0', '1', '2', '3', '4']
['1', '2', '3', '4']
练习:用一个列表统计一个班的年龄(控制台不断输入年龄的值,直到输入 end 为止),然后删除所有小于18岁的年龄
坑一:遍历列表删除部分元素,删不全! -----解决方法:循环时遍历的是原列表的切片(返回一个新列表)
age = input('请输入年龄:')
ages = []
while age != 'end':
ages.append(int(age))
age = input('请输入下一个年龄:')
for age in ages[:]:
if age < 18:
ages.remove(age)
print('年龄:', ages)
运行效果:
请输入年龄:12
请输入下一个年龄:13
请输入下一个年龄:18
请输入下一个年龄:19
请输入下一个年龄:end
年龄: [18, 19]
练习:将小于 18 岁的取出来
坑二:通过下标遍历列表,取出元素的时候,下标越界和元素获取不全
解决方法:下标对应的元素需要删除,下标不动;不会删除下标加1
age = input('请输入年龄:')
ages = []
while age != 'end':
ages.append(int(age))
age = input('请输入下一个年龄:')
i = 0
while i <= len(ages):
nl = ages[i]
if nl < 18:
nl = ages.pop(i)
print('小于18的年龄有:', nl)
i += 1
运行效果:
请输入年龄:12
请输入下一个年龄:15
请输入下一个年龄:17
请输入下一个年龄:19
请输入下一个年龄:21
请输入下一个年龄:end
小于18的年龄有: 12
小于18的年龄有: 17
3.修改(修改元素的值)
列表[下标] = 新值 -----修改列表中指定下标的值
例如:
lis2 = [1, 2, 3, 4]
lis2[0] = 0
print(lis2)
运行效果:
[0, 2, 3, 4]
练习:有一个列表中保存的是学生的成绩,要求将列表中成绩小于60分的改成'下一个班见',并且统计留级的有多少人。
lj = 0
zcj = [56, 57, 58, 59, 60, 61, 62, 63]
for i in range(len(zcj)):
if zcj[i] < 60:
zcj[i] = '下一个班见'
lj += 1
print(zcj, '\n留级的有:', lj, '人')
运行效果:
['下一个班见', '下一个班见', '下一个班见', '下一个班见', 60, 61, 62, 63]
留级的有: 4 人
四、列表的相关运算
1.相关运算:
a.+, *(数学运算)
列表1 + 列表2 -----将两个列表中的元素合并在一起,产生一个新的列表;原列表值不变。
列表1 * N -----将两个列表中的元素重复 N 次,产生一个新的列表;原列表值不变。
b.支持比较运算
列表1 == 列表2 -----判断真假,返回一个布尔值。
列表1 > 列表2 -----比较大小(比较原理与字符串类似),判断真假,返回一个布尔值;只有类型一样的时候才能比较。
2.in / not in
元素 in 列表 -----判断列表中是否存在指定的元素
例如:
print([1, 2] in [1, 2, 3]) # 结果为 False
print([1, 2] in [[1, 2], 'adc', '+']) # 结果为 True
print('adc' in [1, 'adc', False]) # 结果为 True
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/04、list operation 12.29.py"
False
True
True
3.len()
len(列表) -----获取序列中元素的个数。
4.list
list(数据) -----将序列数据转换成列表。(只有序列才能转换)将序列中所有的元素转换成列表的元素。
注意:不能用python给我们提供的类型的名字来做变量,在使用该类型的时候会报错。
5.序列的其它方法
max() -----获取序列中值最大的元素
min() -----获取序列中值最大的元素
sum() ----- 求序列中所有元素的和
注意:以上三个方法,要求序列中的元素类型必须一致,并且这个类型支持比较运算和甲方运算。(一般是数字序列用)
例如:
print(max([20, 30, 40, 50.50]))
print(min([20, 30, 40, 50.50]))
print(sum([20, 30, 40, 50.50]))
运行效果:
50.5
20
140.5
Process finished with exit code 0