# 1. 基础题1. 已知一个数字列表,打印列表中所有的奇数
[i for i inrange(5)if i %2!=0]2. 已知一个数字列表,打印列表中所有能被3整除但是不能被2整除的数
[i for i inrange(10)if i %2!=0and i %3==0]3. 已知一个数字列表,计算所有偶数的和
sum([i for i inrange(10)if i %2==0])4. 已知一个数字列表,统计列表中十位数是`1`的数的个数
len([i for i inrange(13)if i //10%10==1])5. 已知一个列表,获取列表中下标为奇数的所有元素(从0开始的下标值)
例如: lst1 =[10,20,5,34,90,8]
结果:[20,34,8]
方法一:
lst1[1::2]
方法二:
lst1 =[10,20,5,34,90,8][lst1[i]for i inrange(len(lst1))if i %2!=0]7. 已知一个数字列表,将列表中所有元素乘以2
例如: nums =[10,3,6,12] 乘2后: nums =[20,6,12,24]
nums =[10,3,6,12][i *2for i in nums]8. 已知一个列表,获取列表的中心元素
例如:nums =[10,2,6,12]-> 中心元素为:2和6
nums =[10,2,6,12,10]-> 中心元素为:6
nums =[10,2,5,12,10]iflen(nums)%2==0:print(nums[int(len(nums)/2)-1])print(nums[int(len(nums)/2)])else:print(nums[int(len(nums)/2)])9. 已知一个列表,获取列表中所有的整型元素
例如:list1 =[10,1.23,'abc',True,100,'hello','20',5]
结果是:[10,100,5]
lst1 =[10,1.23,'abc',True,100,'hello','20',5][i for i in lst1 iftype(i)==int]
### 2. 进阶题1. 定义一个列表保存多个学生的分数,删除列表中所以低于60分的值
例如: scores =[45,60,89,30,12,59,99,80,71,66] 删除后: scores =[60,89,99,80,71,66]
scores =[45,60,89,30,12,59,99,80,71,66][i for i in scores if i >=60]2. 已知一个列表保存了多个学生的姓名,要求去掉列表中重复的名字
例如:names =['小明','张三','李四','张三','张三','小明','王五','王五']
去重后:names =['小明','张三','李四','王五']
names =['小明','张三','李四','张三','张三','小明','王五','王五']{i for i in names}3. 已知一个数字列表,获取列表中值最大的元素 (不能使用max函数)
num =[5,2,10,7,1,4]
lst =[0]for i in num:if i > lst[0]:
lst[0]= i
print(lst[0])4. 已知两个有序列表(列表中的元素已经按照从小到大的方式排好序),要求合并两个列表,合并后元素还是从小到大排序
例如: list1 =[10,23,39,41,52,55,80] list2 =[9,38,55,70]
合并后的结果:[9,10,23,38,39,41,52,55,55,70,80]
A =[10,23,39,41,52,55,80]
B =[9,38,55,70]deffunc(lst1, lst2):
lst =[]
count1 =0
count2 =0while count2 <len(B)and count1 <len(A):if A[count1]< B[count2]:
lst.append(A[count1])
count1 +=1elif A[count1]> B[count2]:
lst.append(B[count2])
count2 +=1else:
lst.extend([A[count1], B[count2]])
count1 +=1
count2 +=1if count1 ==len(A):
lst.extend(B[count2:])elif count2 ==len(B):
lst.extend(A[count1:])return lst
func(A, B)5. 已知一个有序数字列表(从小到大),输入任意一个数字,将输入的数字插入列表中,要求插入后列表仍然保持从小到大排序的关系
例如: list1 =[10,23,45,67,91] 输入:50-> list1 =[10,23,45,50,67,91]
lst1 =[10,23,45,67,91]
num =50for i inrange(len(lst1)):if lst1[i]>= num:
lst1.insert(i, num)breakelse:
lst1.append(num)print(lst1)