1. 基础题
-
已知一个数字列表,打印列表中所有的奇数
x=[1,2,3,4,5,6] for i in x: if i%2!=0: print(i)
-
已知一个数字列表,打印列表中所有能被能被3整除但是不能被2整除的数
x=[1,2,3,4,5,6] for i in x: if i%2==0 and i%3!=0: print(i)
-
已知一个数字列表,计算所有偶数的和
x=[1,2,3,4,5,6] c=0 for i in x: if i%2==0 : c+=i print(c)
-
已知一个数字列表,统计列表中十位数是
1
的数的个数x=[1,2,3,4,5,6] c=0 for i in x: if i//10%10==1 : c+=1 print(c)
-
已知一个列表,获取列表中下标为奇数是所有元素(从0开始的下标值)
例如: list1 = [10, 20, 5, 34, 90, 8]
结果:[20, 34, 8]
x=[10, 20, 5, 34, 90, 8] c=[] for i in range(0,len(x)): if i%2!=0 : c.append(x[i]) print(c)
-
已知一个数字列表,将列表中所有元素乘以2
例如: nums = [10, 3, 6, 12] 乘2后: nums = [20, 6, 12, 24]
nums = [10, 3, 6, 12] for i in range(0,len(nums)): nums[i]=nums[i]*2 print(nums)
-
已知一个列表,获取列表的中心元素
例如:nums = [10, 2, 6, 12] -> 中心元素为: 2和6
nums = [10, 2, 6, 12, 10] -> 中心元素为:6
nums = [10, 6, 2,12, 10] if len(nums)%2==0: print('中心元素为:',nums[int(len(nums)/2-1)],'和',nums[int(len(nums)/2)],sep='') else: print('中心元素为:',nums[int(len(nums)//2)])
-
已知一个列表,获取列表中所有的整型元素
例如:list1 = [10, 1.23, ‘abc’, True, 100, ‘hello’, ‘20’, 5]
结果是: [10, 100, 5]
list1 = [10, 1.23, 'abc', True, 100, 'hello', '20', 5] c=[] for i in list1: if type(i)==int: c.append(i) print(c)
2. 进阶题
-
定义一个列表保存多个学生的分数,删除列表中所以低于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=0 while True: if scores[i]<60: scores.pop(i) else: i+=1 if len(scores)==i: break print(scores)
-
已知一个列表保存了多个学生的姓名,要求去掉列表中重复的名字
例如:names = [‘小明’, ‘张三’, ‘李四’, ‘张三’, ‘张三’, ‘小明’, ‘王五’, ‘王五’]
去重后:names = [‘小明’, ‘张三’, ‘李四’, ‘王五’]
names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五'] n=[] for x in names: if x not in n: n.append(x) print(n) c=0 while True: if names.count(names[c])!=1: names.remove(names[c]) else: c+=1 if len(names)==c: break print(names)
-
已知一个数字列表,获取列表中值最大的元素 (不能使用max函数)
x = [1, 3, 5, 2, 6, 4] for i in x: for j in x: if i<j: break else: print(i) break
-
已知两个有序列表(列表中的元素已经按照从小到大的方式排好序),要求合并两个列表,合并后元素还是从小到大排序
例如: list1 = [10, 23, 39, 41, 52, 55, 80] list2 = [9, 38, 55, 70]
合并后的结果: [9, 10, 23, 38, 39, 41, 52, 55, 55, 70, 80]
list1 = [10, 23, 39, 41, 52, 55, 80] list2 = [9, 38, 55, 70] l=list1+list2 k=sorted(l) print(k)
-
已知一个有序数字列表(从小到大),输入任意一个数字,将输入的数字插入列表中,要求插入后列表仍然保持从小到大排序的关系
例如: list1 = [10, 23, 45, 67, 91] 输入: 50 -> list1 = [10, 23, 45, 50, 67, 91]
n=int(input('需要插入的数为:'))
list1 = [10, 23, 45, 67, 91]
for i in range(len(list1)):
if n<list1[i]:
list1.insert(i,n)
break
print(list1)
好玩的来喽
- 创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序
例如:[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
--- 去重之后 [70, 88, 91, 107, 234, 177, 282, 197]
---- 降序排序 [282, 234, 197, 177, 107, 91, 88, 70]
x=[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
for i in x:
if x.count(i)>1:
x.remove(i)
print(x)
z=sorted(x,reverse=True)
print(z)
- 利用列表推导式, 完成以下需求
a. 生成一个存放1-100中各位数为3的数据列表
结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
x=[i for i in range(3,100,10)]
print(x)
b. 利用列表推到是将 列表中的整数提取出来
例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
z=[True, 17, "hello", "bye", 98, 34, 21]
k=[i for i in z if type(i)==int]
print(k)
c.利用列表推导式 存放指定列表中字符串的长度
例如: ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
z=["good", "nice", "see you", "bye"]
c=[]
for i in z:
k=str(len(i))
c.append(k)
print(c)
d. 利用列表推导式删除列表中整数个位数小于5的元素
例如:[24, 'abc', 99, True, 21, 38, 'hello'] --- ['abc', 99, True, 38, 'hello']
lis=[24, 'abc', 99, True, 21, 38, 'hello']
l=[i for i in lis if type(i)!=int or i%10>5]
print(l)
e. 利用列表推导式获取元素是元组的列表中每个元组的最后一个元素
例如:[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)] --- [30, 'hello', 3.4, False]
z=[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
k=[i[-1] for i in z]
print(k)
f.利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2
例如: [23, 4, 67, 88, 90, 21] -> [46, 2, 134, 44, 45, 42]
z=[23, 4, 67, 88, 90, 21]
k=[int(i/2) if i%2==0 else 2*i for i in z]
print(k)
-
已知一个列表获取列表中指定元素所有的下标
例如:[10, 20, 34, 10, 9, 78] 10的下标:[0, 3] 20的下标:[1] 30的下标:[]
z=[10, 20, 34, 10, 9, 78] k=[] l=0 for i in z: if z.count(i)>1: if l==0: for j in range(len(z)): if i==z[j]: k.append(j) print(i,'的下标:',k) k=[] l=1 else: for j in range(len(z)): if i==z[j]: k.append(j) print(i,'的下标:',k) k=[]
-
*已知一个数字列表,写程序判断这个列表时候是连续递增列表。
例如: [1, 2, 3, 4, 5] -> True [23, 45, 78, 90] -> True [1, 3, 2, 4, 5] -> False
z=[1, 3, 2, 4, 5] k=sorted(z) if z==k: print(True) else: print(False)
-
已知两个列表,将两个列表按照下面的规律交叉合并
A = [10, 20, 30, 40, 50] B = [100, 200, 300] 结果:[10, 100, 20, 200, 30, 300, 40, 50]
A = [10, 20, 30, 40, 50] B = [100, 200, 300] j=1 for i in range(0,len(B)): while True: A.insert(j,B[i]) j+=2 break print(A)
-
已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表
A = [10, 20, 30, 40, 50] B = [25, 44, 60] 结果:[10, 20, 25, 30, 40, 45, 50, 60]
A = [10, 20, 30, 40, 50] B = [25, 44, 60] c=A+B k=sorted(c) print(k)