day5-循环练习和列表
01.循环嵌套
(1) 循环嵌套的执行原则:外循环一次,内循环完整
for x in range(5):
for y in range(2, 5):
print(x,y)
- x的取值范围: 0, 1, 2, 3, 4
第一次 x = 0: 执行循环体对应的for循环, y取值范围是:2, 3, 4
第一次 y=2: print(x, y) -> print(0, 2)
第一次 y=3: print(x, y) -> print(0, 3)
第一次 y=4: print(x, y) -> print(0, 4)
内循环结束
02.认识列表
(1) 什么是列表
- 列表长什么样子:列表是容器型数据类型(序列);将[]作为容器的标志,里面多个元素用逗号隔开:[元素1,元素2,元素3,…]
- 列表的特点:列表是可变的(元素的个数、值和顺序可变) - 增、删、改;列表是有序的 - 支持下标操作
- 列表对元素的要求:没有要求(不管什么类型的数据都可以作为列表的元素)
- 空列表
ist1 = []
ist2 = [ ]
rint(type(list1),type(list2))
rint(bool(list1),bool(list2))
rint(len(list1),len(list2))
- 列表可以同时保存多个数据
list3 = [89,90,76,99,58]
print(list3)
(2) 查 - 获取元素
- 查分为三种情况:获取单个元素、切片、遍历(一个一个的取)
- 获取单个元素
语法:列表[下标]
说明:
列表 - 任何结果是列表的表达式,比如:保存列表的变量、具体的列表值等
[] - 固定写法
下标 - 下标又叫索引,是元素在有序序列中位置信息。
python中有序序列中每个元素都有两组下标值,分别是:从前往后从0开始递增的下标值;从后往前从-1开始递减的下标值
name = ['甄姬','貂蝉','韩信','吕布','赵云','后羿','鲁班','狄仁杰']
print(name[1])
print(name[-1])
print(name[5])
(3) 遍历
-
方式1 - 直接获取列表中的每个元素
for 变量 in 列表:
循环体 -
方式2 - 先获取每个元素的下标值,然后通过下标再获取元素
for 下标 in range(len(列表)):
循环体range(len(列表)) == range)列表中元素的个数)
-
方式3 - 同时获取列表中每个元素和元素对应的下标
for 下标, 元素 in enumerate(列表):
03.添加元素
(1) 列表
- 列表.append(元素) - 在列表的最后添加一个元素
- 列表. insert(下标,元素) - 在指定下标对应的元素前插入指定元素
(2) 批量添加
-
列表1.extend(列表2) - 将列表2元素全部添加到列表1的后面
1.已知一个数字列表,求列表中心元素。
nums = [23, 45. 89, 20, 19, 40, 30, 8]
count = len(nums)
if count % 2:
print(nums[count // 2])
else:
index = count // 2
print(nums[index - 1], nums[index])
2.已知一个数字列表,求所有元素和。
nums = [23,45, 89, 20, 19, 40, 30, 8]
sum1 = 0
for item in nums:
sum1 += item
print(sum1)
3.已知一个数字列表,输出所有奇数下标元素。
nums = [23, 45, 89, 20, 19, 40, 30, 8]
print(nums[1:2])
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
nums = [23, 45, 89, 20, 19, 40, 30, 8]
for item in nums:
if item % 2:
print(item)
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
nums = [23, 45, 89, 20, 19, 40, 30, 8] for index, item in enumerate(nums): nums(index) = item * 2 print(nums)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] new_nums = [] for name in names: if name not in new-names: new_names.append(name) print(new_names)
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
scores = [89, 90, 65, 70, 92, 88, 56]
scores.sort()
sum1 = 0
del score(0)
del score(-1)
for i in scores:
sum1 += i
print(sum1 / len(scores))
8.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]
A = [1, 'a', 4, 9] B = ['a', 8, 'j', 1] C = [] for i in A: for i in B: C.append(i) print(c)
9.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1] max_value = nums[0] for item in nms[1:0]: if item > max_value: max_value = item print(max_value)
10.获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3, 1] new_nums = [] for item in nums: lf item not in new_nums: new_nums.append max_count = 0 for item in new_nums: i_count = nums.cuont(item) if i_count > max_count: max_count = i_count for item in new_nums: if nums.count(item) == max_count: ptint(item)