list学习笔记及相关习题
习题
listed = [1, 2, 3, 4, 5, 6, 7, 8, 9]
1.已知一个列表,求列表中心元素。
coreEm = listed[len(listed) // 2]
print(coreEm)
输出结果:5
2.已知一个列表,求所有元素和。
sum = 0
for x in listed:
sum += x
print(sum)
输出结果:45
3.已知一个列表,输出所有奇数下标元素。
print(listed[::2])
输出结果:[1, 3, 5, 7, 9]
4.已知一个列表,输出所有元素中,值为奇数的。
for item in listed:
if item%2:
print(item)
输出结果
1
3
5
7
9
5.已知一个列表,将所有元素乘二。
print(list(x*2 for x in listed))
输出结果:[2, 4, 6, 8, 10, 12, 14, 16, 18]
6.已知一个列表,将所有元素加到第一个元素中。
list1 = [listed[0]]
for item in listed:
list1.append(item)
print(list1)
输出结果:[1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7.已知一个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。
listA = ['haha', 'wo', 23, '山丘', 12.7]
listB = []
listC = []
for m in range(len(listA)):
if m%2:
listB.append(listA[m])
continue
listC.append(listA[m])
print(listB,listC)
输出结果:
['wo', '山丘'] ['haha', 23, 12.7]
8.把A列表的前5个元素复制到B列表中。
listB = []
for m in range(5):
listB.append(listA[m])
print(listB)
输出结果:
['haha', 'wo', 23, '山丘', 12.7]
9.把1----36分别放入列表中,计算列表数组对角元素之和。6 * 6的列表
lists = [[]for _ in range(6)]
m = 1
sum = 0
for g in range(0, 6):
for m in range(m, m+6):
if g == m%6:
sum += m
print(m)
lists[g].append(m)
m = m + 1
print(lists,sum)
输出结果:
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36]] 111
10.有一个长度是10的列表,列表内有10个不重复的数字,要求按从大到小排序。
list_nuber = [23, 35, 413, 92, -126, 658, 22, 341, 7, 10]
print(len(list_nuber))
list_nuber.sort()
print(list_nuber)
输出结果:
10
[-126, 7, 10, 22, 23, 35, 92, 341, 413, 658]
11.有一个长度是10的列表,要求删除某一个位置的元素
del list_nuber[3]
print(list_nuber)
输出结果:[-126, 7, 10, 23, 35, 92, 341, 413, 658]
12.有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置。
num = int(input('请输入你想要添加的值'))
index = 0
for number in list_nuber:
index += 1
if num > number:
list_nuber.insert(index, num)
print(list_nuber)
输出结果;
请输入你想要添加的值1
[-126, 1, 7, 10, 23, 35, 92, 341, 413, 658]
13.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
names = ['李白', '纳兰性德', '三毛', '秦观', '白居易', '李商隐', '杜甫', '秦观', '纳兰性德', '李白']
print(len(names))
name = list(set(names))
print(names)
print(name)
输出结果:10
['李白', '纳兰性德', '三毛', '秦观', '白居易', '李商隐', '杜甫', '秦观', '纳兰性德', '李白']
['白居易', '李白', '杜甫', '三毛', '李商隐', '纳兰性德', '秦观']
14.把A列表的第三到第六位之间的元素删除。
list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
del list_a[3:6]
print(list_a)
输出结果:[1, 2, 3, 7, 8, 9]
15.已知A列表,B列表,定义一个列表C,要求C包含A,B数组中的数据(无重复值)。
list_b = list(i * 2 for i in range(10))
print(list_b)
list_c =list(set(list_a + list_b))
print(list_c)
输出结果:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 14, 16, 18]
学习笔记
反省:今天老师花了一早上来讲昨晚的习题,感觉远没有自己做题收获来的大。而且老师所讲的方法于我而言并不合适,尤其是兔子那个问题,我觉得只要知道当前数量等于前两个数量之和调用递归函数要简单的多。而不是通过循环来实现。比较注意的一点是关于for循环和while循环的选择使用,在次数确定的时候选用for循环,这点需要自己注意。欠缺遇到问题,判断出需要选择循环解决问题,但少了选择哪种循环来解决问题步骤。恩,今天下午的学习还是挺愉快的,进一步熟悉了list的相关知识及操作。习题中九题是十二题逻辑性比较强,花了点时间,收获也不错。今天的git没有学,早上起晚了。。。晚上早点睡吧!明天自习完成git的全部学习,争取控制界面版的学生信息管理系统在写出来之后,能上自己的GitHub。哈哈哈哈哈哈!!!
关于一些list的知识
列表、字典、元组、集合都是序列,都是容器类型的数据类型。
列表:用来存储多个数据的一种数据类型。里面存储的单个数据,我们叫元素。
特点:
1、有序的
2、可变的(可变指的是容器中的内容的个数和值可变)
3、元素可以是任何类型的数据
列表的值:用[]将列表中的元素括起来,多个元素之间用逗号隔开。[] -> 空列表
1、怎么声明一个列表
1、声明一个变量,赋一个列表值
list1 = []
print(type(list1))
list2 = [1, 12.9, 'abs', {'a': 2}]
print(list2)
2、将其他的数据类型转换成列表
list3 = list('1243fsdv')
print(list3)
3、生成式
list4 = list(i * 2 for i in range(10))
print(list4)
list5 = list(i for i in range(100) if i % 3 == 0)
print(list5)
2、获取列表元素
列表中的每一个元素都对应的一个下标:0~列表的长度-1;-1~-列表长度
names = ['李白', '纳兰性德', '三毛', '秦观', '白居易', '李商隐', '杜甫']
a.获取单个元素:列表名[下标]
下标不能越界
print(names[1])
print(names[-6])
b.获取部分元素(切片)
列表名[起始下标:结束下标]:获取从起始下标开始,到结束下标前的所有的元素。结果是一个列表。列表名[起始下标:结束下标:步进]:获取从起始下标开始,每次下标值加步进,获取下一个元素,到结束下标前的所有的元素。结果是一个列表。其实下标和结束下标都可以缺省。如果步进是正数,起始下标缺省就是
从第一个元素开始获取,结束下标缺省就是从最后一个元素开始获取;如果步进是负数起始下标缺省就从最后一个元素开始,结束下标缺省就是从第一个元素开始获取。
print(names[0:4])
print(names[0:4:2])
print(names[:])
print(names[::-1])
c.一个一个的获取列表的所有元素(遍历列表)
scores = [67, 78, 89, 43, 26, 99, 47, 86]
# for循环遍历下标
for item in scores:
print(item)
# while 循环
index = 0
while index < len(scores):
print(scores[index])
index += 1
3.获取列表的长度(获取列表元素的个数)
print(len(names))
添加列表元素
skills = []
print(skills)
1.append函数
列表.append(元素)
在列表的末尾添加一个元素
skills.append('六脉神剑')
print(skills)
skills.append('吸星大法')
print(skills)
2.insert函数
列表.insert(index,元素)
在列表中下标为index的位置前插入一个元素
注意:在这儿,下标可以越界,如果越界,就会插入到列表的最前面或者最后面
skills.insert(1, '降龙十八掌')
print(skills)
3.+:连接
列表1 + 列表2
将列表中的元素合并,并创建一个新的列表
new_skills = skills + ['一阳指']
print(new_skills)
# 练习:从控制台输入10个学生的成绩,然后保存在一个列表中
score = []
count = 0
while True:
count += 1
score.append(input('请输入学生成绩:'))
if count == 10:
print('你已完成输入')
print(score)
break
# 次数确定,应优先使用for循环。且无意义,用_
删除列表元素
films = ['杀生', '肖生克的救赎', '我不是药神', '邪不压正', '大圣娶亲', '盗梦空间']
1.del 语句
del可以删除任何数据
del 列表[下标]:删除列表中指定下标的元素
del films[3]
print(films)
2.remove 方法
列表.remove(元素):删除列表中的指定的元素
注意:如果删除的元素不在列表中,rm语句会报错
films.remove('杀生')
print(films)
3.pop方法
列表.pop():将列表中最后一个元素取出来
列表.pop(下标):将列表中指定元素取出来
print(films)
film = films.pop()
print(films, film)
# scores = [23,45,78,32,90,45,8],删除小于60分的成绩
scores = [23, 45, 78, 32, 90, 45, 8]
for x in scores[:]:
if x < 60:
scores.remove(x)
print(scores)